[英]Read-Only properties without getters
我正在阅读有关在Python中使用吸气剂的链接 ,引用:
Python方式是不使用它们。 如果您必须拥有它们,则将它们隐藏在属性后面。
同一页面上包含各种示例,但是我的问题是,如果getter不是Python方式,我将如何向阅读我的代码的人指示变量在构造后应为只读。
假设我有以下课程:
class Car:
def __init__(self, ID, name, tire, engine):
self.ID = ID
self.name = name
self.tire = tire
self.engine = engine
def __str__(self):
return "ID: {0} Name:{1} Tire: {2} Engine: {3}".format(self.ID, self.name, self.tire, self.engine)
如果我想向另一位开发人员指示self.engine
在constructor
中设置后为只读,我该怎么做? 用命令的话来说,如果客户违反了规则并尝试设置它,那么self.engine
的实现发生变化(例如,从类Engine
对象到Dictionary
)会出现问题。
您可以使用@property
装饰器,而不定义定义器来传达不应修改engine
:
class Car(object):
def __init__(self, ID, name, tire, engine):
self.ID = ID
self.name = name
self.tire = tire
self._engine = engine
def __str__(self):
return "ID: {0} Name:{1} Tire: {2} Engine: {3}".format(self.ID, self.name, self.tire, self.engine)
@property
def engine(self):
return self._engine
请注意,用户仍然可以绕过该属性并直接设置_engine
。
请注意, @property
装饰器仅适用于新样式类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.