2018.3.23学习笔记(利用反射查看成员、静态字段、静态方法、类方法、特性)
2018-03-24 23:04 冒牌权限 阅读(123) 评论(0) 收藏 举报利用反射查看成员
#!/usr/bin/env python # -*- coding:utf-8 -*- class fuck: def __init__(self,name): self.name = name def func(self): pass print(hasattr(fuck,'name'))#由于没有初始化,所以单纯的fuck类里面是没有name的 obj = fuck('fuck') print(hasattr(obj,'name'))#初始化,得到一个对象obj,obj里面就有name成员了 print(obj.name)
静态字段
#!/usr/bin/env python # -*- coding:utf-8 -*- class Provice: ziduan = 'wo le ge cha'#静态字段,属于类 def __init__(self,name):#普通字段,属于对象 self.name = name def func(self):#普通方法,属于对象 pass print(Provice.ziduan)#可以看到对象创建之前,就可以访问!推荐使用类来访问,规范:在python中,谁的成员由谁来访问 obj = Provice('fuck you') print(obj.name) print(obj.ziduan)#对于静态字段,虽然对象可以访问,但是不推荐这么用,因为在别的语言可能不支持
静态方法、类方法
#!/usr/bin/env python # -*- coding:utf-8 -*- class Provice: ziduan = 'wo le ge cha'#静态字段,属于类 @staticmethod def j_func():#需要@staticmethod装饰,就可以变成静态方法,无self print('静态方法') @classmethod def c_func(cls):#需要@classmethod装饰,就可以变成类方法,有cls参数,很像静态方法的加cls参数特殊情况 print(cls,type(cls)) def __init__(self,name):#普通字段,属于对象 self.name = name def func(self):#普通方法,属于对象 pass Provice.j_func()#类访问静态方法,推荐使用 Provice.c_func()#类访问类方法,推荐使用 obj = Provice('fuck you') obj.j_func()#对象访问静态方法,同样遵照谁的成员由谁来访问规范,所以不推荐这么使用
特性
#!/usr/bin/env python # -*- coding:utf-8 -*- class Provice: def __init__(self,name): self.name = name @property#获取值 def func(self):#加@property将方法伪造成字段 temp = "%s sb"%self.name return temp @func.setter#设置值 def func(self,value): self.name = value obj = Provice('') print(obj.func)#伪造成字段,不用加括号就执行了 obj.func = '还是习总'#如果没有setter,则会报错 print(obj.func)
浙公网安备 33010602011771号