classAnimal:def__init__(self,name,num):
self.name=name #实例的属性
self.num=num#实例的属性
has_animal='long'@classmethod #类方法,不能访问实例属性,里面不能写self.name 这是实例属性deftalk(self):
print("%s is talking" % self.has_animal)
#这是错误的 print("%s is talking" % self.name)@staticmethod #静态方法 没有传参数,索引外面也不能传参数defwalk():
print( "xx is walk" )
@staticmethoddefwalking(self):
print("%s is walking" % self.name)
@property #实例属性defhabbit(self):return ("%s habit is xx" % self.name)
@propertydeftotal(self):return self.num
@total.setter #属性传值deftotal(self,num):
self.num=num
print('total players:',self.num)
@total.deleter #删除属性deftotal(self):
print("total got deleted!")
del self.num
d = Animal('laowang','22')
e = Animal('xiaoren','20')
Animal.talk() #long is talking 类方法
d.walk()# xx is walk 静态方法 walk()没有传self 所以 这里也不能传参数
Animal.walk() # xx is walk 静态方法
d.walking(e)# xiaoren is walking 静态方法 walking(self) 将实例化的对象传入了,所以这里要传参数#属性
print(d.habbit) #laowang habit is xx
print(d.total) #22#属性传值,调用的 第二个方法total方法
d.total=23#total players: 22 属性传值
print(d.total) #23#删除属性 total got deleted!del d.total
#属性删除了,会报错
print(d.total)