Day 19:面向对象【类方法】静态属性/静态属性/类方法
静态属性 @property
1 class Mom: 2 gender = "woman" 3 def __init__(self,name,weight): 4 self.name = name 5 self.weight = weight 6 @property#静态方法 7 #把一个方法做成 8 def cook_dinner(self): 9 return " %s 今天做个,蛋糕" % (self.name) 10 11 m1 = Mom('XFD',120) 12 # print(m1.cook_dinner())#这样执行就报错了 13 print(m1.cook_dinner)#看起来是了调用了数据属性,实际上就是调用了方法 14 #@property 有隐藏函数属性的作用,在外展示,好像是数据属性一样
静态方法:我感觉没个卵用
1 class Mom: 2 gender = "woman" 3 def __init__(self,name,weight): 4 self.name = name 5 self.weight = weight 6 @staticmethod# 7 def clean_up(a,b):#没有self 就和实例绑定 8 return "XFD 正在擦%s,%s" % (a,b) 9 def clean_up1(a,b): 10 return "XFD 正在擦%s,%s" % (a,b) 11 # 12 print(Mom.clean_up('桌子',"凳子"))#XFD 正在擦桌子,凳子 13 m1 = Mom("xfd",110) 14 print(m1.clean_up('桌子',"凳子"))#实例也可以调用 15 #@staticmethod 类的工具包 16 #不跟类绑定,也不和实例绑定 17 #Mom.clean_up1(1,2)这样是可以调用 18 #m1.clean_up1(1,2) 这样不可以调用 :为什么呢? 19 #(调用时会把自己(m1)传进去,但是我们又没有定义肯定报错咯) 20 #加@staticmethod和不加有什么区别呢 ? 21 静态方法只是名义上归类管理,不能使用类变量和实例变量
类方法
需求:不使用实例,怎么调用类的函数属性
class Mom: gender = "woman" def __init__(self,name,weight): self.name = name self.weight = weight # @property#静态方法 #把一个方法做成 @classmethod#专门给类使用的方法 def cook_dinner(cls):#记得这个关键字 cls # 用classmethod时,要专门给定义一个这个方法供类调用 return " %s 今天做个,蛋糕" % (cls.gender) # def cook_dinner(self): # return " %s 今天做个,蛋糕" % (self.name) print(Mom.gender) M1 =Mom("XFD","110") # print(Mom.cook_dinner(M1))#这样调用不到。 print(M1.cook_dinner())#如果使用类方法,只能通过实例来调用 #类方法,那就是不通过实例,直接调用怎么办呢 #@classmethod 把这个放置在类方法的前面类就可以直接调用了(cls)
备注:类方法:记得只调用类的数据属性,不要cls. init里面的数据属性。那是实例用的!
人生苦短,我用Python