繁体   English   中英

不含吸气剂的只读属性

[英]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.engineconstructor中设置后为只读,我该怎么做? 用命令的话来说,如果客户违反了规则并尝试设置它,那么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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM