【发布时间】:2011-06-01 03:41:01
【问题描述】:
在 Python 中,我有以下示例类:
class Foo:
self._attr = 0
@property
def attr(self):
return self._attr
@attr.setter
def attr(self, value):
self._attr = value
@attr.deleter
def attr(self):
del self._attr
如您所见,我有一个简单的“私有”属性“_attr”和一个可以访问它的属性。有很多代码来声明一个简单的私有属性,我认为这样声明所有属性是不尊重“KISS”理念的。
那么,如果我不需要特定的 getter/setter/deleter,为什么不将我的所有属性声明为公共属性呢?
我的答案是: 因为封装原理(OOP)另有规定!
最好的方法是什么?
【问题讨论】:
-
“声明”是什么意思? Python 没有声明。因此,当您使用“声明”一词时,不清楚您的意思是什么。请更新您的问题以替换“声明”一词或定义您的意思。
-
@SLott 这很奇怪,因为例如chapter 9 of the Python tutorial 提到声明(例如在范围界定的上下文中)。它似乎是在常识中使用的(可以将其表述为“引入名称的语句、指令或表达式”)。
标签: python oop properties encapsulation