python中寻址属性的样式

这个问题是风格之一。由于这些属性在python中不是私有的,因此使用类似的方法在类外部直接解决这些属性是一种好习惯my_obj.attr吗?或者,也许最好还是通过成员函数来做到这一点,就像get_attr()在c ++中那样,这是通常的做法?


慕妹3242003
浏览 247回答 3
3回答

蓝山帝景

听起来像您想使用属性:class Foo(object):    def __init__(self, m):        self._m = m    @property    def m(self):        print 'accessed attribute'        return self._m    @m.setter    def m(self, m):        print 'setting attribute'        self._m = m>>> f = Foo(m=5)>>> f.m = 6setting attribute>>> f.maccessed attribute6这是访问变量的最自适应方法,对于简单的用例,您不需要这样做,并且在Python中,您始终可以更改设计以稍后使用属性,而无需付出任何代价。

MM们

首先创建该类的实例:myinstance = MyClass()myinstance.attr否则,您会收到类似AttributeError: class MyClass has no attribute 'attr'尝试执行时的错误消息MyClass.attr

慕斯709654

是的,这是一种常见的做法。如果要更好地控制属性的检索方式,请考虑使用__getattribute__和/或__getattr__。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python