python中的@property详解

python中的@property详解

@property是Python的一种装饰器,它可以让一个办法像属性一样被使用,而不必要在调用的时分带上括号。如此可以便利地对属性举行拜候和修正,同时也可以对属性举行预处理和反省。

使用@property有以下几个利益:

  • 可以保护类的属性,避免被随意修正或删除。
  • 可以完成属性的动态更新,依据其他属性的厘革而厘革。
  • 可以对属性举行验证和转换,确保属性的合法性和一律性。

使用@property必要依照以下几个端正:

  • @property装饰器应该放在办法的界说外表,办法的称呼应该与要交换的属性名相反。
  • @property装饰器会创建一个只读属性,假如要完成可写属性,必要再界说一个与之对应的@办法名.setter装饰器。
  • @property装饰器和@办法名.setter装饰器应该紧挨着界说,且办法名应该一律。
  • 假如要完成可删除属性,必要再界说一个与之对应的@办法名.deleter装饰器。

底下是一个使用@property的简便示例:

class Person(object): def __init__(self, name, age): self._name = name # 用下划线开头表现公有属性 self._age = age @property # 界说一个只读属性name def name(self): return self._name @property # 界说一个只读属性age def age(self): return self._age @age.setter # 界说一个可写属性age def age(self, value): if not isinstance(value, int): # 对输入的值举行验证 raise ValueError('age must be an integer') if value < 0 or value > 120: # 对输入的值举行限定 raise ValueError('age must be between 0 and 120') self._age = value # 对输入的值举行赋值 @age.deleter # 界说一个可删除属性age def age(self): del self._age # 删除公有属性_age p = Person('Alice', 18) # 创建一个Person目标 print(p.name) # 拜候只读属性name print(p.age) # 拜候只读属性age p.age = 20 # 修正可写属性age print(p.age) # 再次拜候只读属性age del p.age # 删除可删除属性age print(p.age) # 报错:AttributeError: 'Person' object has no attribute '_age'


内容底部广告位(手机)
标签:

管理员
草根站长管理员

专注网站优化+网络营销,只做有思想的高价值网站,只提供有担当的营销服务!

上一篇:中国广电最后的结局会是什么?
下一篇:返回列表