为了账号安全,请及时绑定邮箱和手机立即绑定

python中寻址属性的样式

python中寻址属性的样式

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

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

听起来像您想使用属性:


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 = 6

setting attribute

>>> f.m

accessed attribute

6

这是访问变量的最自适应方法,对于简单的用例,您不需要这样做,并且在Python中,您始终可以更改设计以稍后使用属性,而无需付出任何代价。


查看完整回答
反对 回复 2021-03-30
?
MM们

TA贡献1886条经验 获得超2个赞

首先创建该类的实例:


myinstance = MyClass()

myinstance.attr

否则,您会收到类似AttributeError: class MyClass has no attribute 'attr'尝试执行时的错误消息MyClass.attr


查看完整回答
反对 回复 2021-03-30
?
慕斯709654

TA贡献1840条经验 获得超5个赞

是的,这是一种常见的做法。如果要更好地控制属性的检索方式,请考虑使用__getattribute__和/或__getattr__


查看完整回答
反对 回复 2021-03-30
  • 3 回答
  • 0 关注
  • 246 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号