自定制property】的更多相关文章

利用描述符自定制property class Lazyproperty: def __init__(self,func): # print('==========>',func) self.func=func def __get__(self, instance, owner): #只有get的情况下是非数据描述符,优先级比实例的低 print('get') # print(instance) # print(owner) if instance is None: #实例调用的时候穿的是自己 类…
自定制prooerty: #模拟@property 实现将类的函数属性变成类属性: #定义描述符 class msf(): def __init__(self,obj): self.obj = obj def __get__(self, instance, owner): if instance is None: return self re = self.obj(instance) instance.__dict__[self.obj.__name__] = re return re clas…
class Lazyproperty: def __init__(self, func): self.func = func def __get__(self, instance, owner): print('get') # print(instance) # print(owner) if instance is None: return self res = self.func(instance) setattr(instance, self.func.__name__, res) ret…
class LazyProperty: ''' hello,我是非数据描述符(没有定义__set__,不然是大哥数据描述符了--!) ''' def __init__(self, func): print('>>>>>>>>>>这是LazyProperty的初始化方法__init__') # print(func) # print(func.__name__) self.func = func def __get__(self, instance…
描述符1.描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()这三个内置方法中的一个,描述符也被称为描述符协议(1):__get__()调用一个属性时触发(2):__set__()为一个属性赋值时触发(3):__delete__()采用del删除属性时触发2.描述符的作用是用来代理另外一个类的属性的(必须把描述符定义成这个类的属性,不能定义到构造函数) class Foo: #定义新式类 def __get__(sel…
一.再看property                                                                          一个静态属性property本质就是实现了get,set,delete三种方法 class Foo: @property def AAA(self): print('get的时候运行我啊') @AAA.setter def AAA(self,value): print('set的时候运行我啊') @AAA.deleter de…
1.property用法 # class Goods: # def __init__(self): # # 原价 # self.original_price = 100 # # 折扣 # self.discount = 0.8 # # @property # def price(self): # # 实际价格 = 原价 * 折扣 # new_price = self.original_price * self.discount # return new_price # # @price.sett…
自定制property class Lazyproperty: def __init__(self,func): # print('==========>',func) self.func=func def __get__(self, instance, owner): print('get') # print(instance) # print(owner) if instance is None: return self res=self.func(instance) setattr(ins…
一.什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. 二.四个可以实现自省的函数(下列方法适用于类和对象) 1.hasattr(object,name) 判断object中有没有一个name字符串对应的方法或属性 2.getattr(object, name, default=None)…
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象  和  issubclass(sub, super)检查sub类是否是 super 类的派生类 class A: pass class B(A): pass print(issubclass(B,A)) # B是A的子类 ,返回True a1 = A() print(isinstance(a1,A)) # a1 是A 的实例 二 反…