classDog(object):def__init__(self,name):
self.name = name
@staticmethoddefeat():print("I am a static method")
d = Dog("ChenRonghua")
d.eat()# 方法1:使用实例调用
Dog.eat()# 方法2:使用类直接调用
classDog(object):
name ='类变量'#在这里如果不定义类变量仅定义实例变量依然报错def__init__(self,name):
self.name ='实例变量'
self.name = name
@classmethoddefeat(self,food):print("%s is eating %s"%(self.name,food))
Dog.eat('baozi')#方法1:使用类直接调用
d = Dog("ChenRonghua")
d.eat("包子")#方法2:使用实例d调用
classDog(object):def__init__(self, name):
self.name = name
@propertydefeat(self):print(" %s is eating"% self.name)
d = Dog("ChenRonghua")
d.eat()# 调用会出以下错误, 说NoneType is not callable, 因为eat此时已经变成一个静态属性了, # 不是方法了, 想调用已经不需要加()号了,直接d.eat就可以了
魔法方法
new
产生一个实例
init
产生一个对象
del
析构方法,删除无用的内存对象(当程序结束会自动自行析构方法)
反射
hasattr: 判断当前类是否有这个方法
classDog(object):defeat(self,food):print("eat method!!!")
d = Dog()#hasattr判断对象d是否有eat方法,有返回True,没有返回Falseprint(hasattr(d,'eat'))#Trueprint(hasattr(d,'cat'))#False