天水师范学院是几本,宝安碧海湾公园,南京南动车所塌方
在解释属性查找顺序之前我们需要了解python中的属性描述符,属性描述符作为其他类对象的属性而存在,实现了特殊方法中的get、set、delete中的一种即可称作属性描述符。
其中只实现了__get__()的称作非数据描述符,实现了__get__()和__set__()方法的称作数据描述符。
class data(): def __get__(self, instance, owner): pass def __set__(self, instance, value): pass def __delete__(self, instance): pass
class nonedata(): def __get__(self, instance, owner): pass
在实际项目的开发中我们有时候需要去将自己的逻辑(方法)变成属性来调用,也就是我们常说的@property动态属性。
import numbers class user: def __init__(self): pass @property def age (self): return self.__userage @age.setter def age(self,value): if isinstance(value,numbers.integral): self.__userage = value else: raise valueerror if __name__ == '__main__': user = user() user.age = 30 print(user.age)
读到这,肯定很多人者都会有一个疑问,那属性描述符还有什么用呢?我们在设计user类的时候,肯定不只有age这一个属性,如果再加上其他信息属性,那么就会出现大量的@property修饰的方法在同一个类,这是不符合设计原则的,代码的分离性和可读性大大降低。这时候属性描述符就能起到很大的帮助了。
class ageattr: def __get__(self, instance, owner): return self.__userage def __set__(self, instance, value): if isinstance(value,numbers.integral): self.__userage = value else: raise valueerror def __delete__(self, instance): pass class user: age = ageattr() def __init__(self): pass import numbers if __name__ == '__main__': user = user() user.age =25 print(user.age)
关于属性的查找顺序请看这>
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
python求numpy中array按列非零元素的平均值案例
网友评论