静态方法@staticmethod 属性方法@property
Posted rongye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态方法@staticmethod 属性方法@property相关的知识,希望对你有一定的参考价值。
多态
接口重用, 一种接口,多种实现
静态方法@staticmethod
只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性
类方法@classmethod
只能访问类变量,不能访问实例变量
属性方法@property
把一个方法变成一个静态属性
给参数赋值要重新定义一个同名函数,并且前面加@属性名.setter
import os
# os.system()
# os.mkdir()
class Dog(object):
def __init__(self,name):
self.name = name
@staticmethod #实际上跟类没什么关系了
def eat(self):
print("%s is eating %s" %(self.name,‘dd‘))
def talk(self):
print("%s is talking"% self.name)
d = Dog("ChenRonghua")
d.eat(d)
d.talk()
ChenRonghua is eating dd
ChenRonghua is talking
import os
# os.system()
# os.mkdir()
class Dog(object):
‘‘‘这个类是描述狗这个对象的‘‘‘
def __init__(self,name):
self.name = name
self.__food = None
#@staticmethod #实际上跟类没什么关系了
#@classmethod
@property #attribute
def eat(self):
print("%s is eating %s" %(self.name,self.__food))
@eat.setter
def eat(self,food):
print("set to food:",food)
self.__food = food
@eat.deleter
def eat(self):
del self.__food
print("删完了")
def talk(self):
print("%s is talking"% self.name)
def __call__(self, *args, **kwargs):
print("running call",args,kwargs)
def __str__(self):
return "<obj:%s>" %self.name
#print(Dog.__dict__) #打印类里的所有属性,不包括实例属性
d = Dog("ChenRonghua")
print(d)
# print(d.__dict__) #打印所有实例属性,不包括类属性
# d(1,2,3,name=333)
#Dog("ChenRonghua")()
http://www.cnblogs.com/alex3714/articles/5213184.html
以上是关于静态方法@staticmethod 属性方法@property的主要内容,如果未能解决你的问题,请参考以下文章
面试必问python实例方法类方法@classmethod静态方法@staticmethod和属性方法@property区别
类方法@classmethod属性方法@property静态方法 @staticmethod
Python进阶-----静态方法(@staticmethod)