【问题标题】:notation for accessing class and object attributes in python在 python 中访问类和对象属性的表示法
【发布时间】:2013-10-04 22:09:20
【问题描述】:

在下面的代码中;

>>> class fooo():
        def __init__(self):
            self.a=[]
>>> fooo().a
    []
>>> fooo.a
    Traceback (most recent call last):
      File "<pyshell#12>", line 1, in <module>
        fooo.a
    AttributeError: class fooo has no attribute 'a'

我对用于访问变量“a”的符号 fooo().a 和 fooo.a 有点困惑。是不是每当我们使用 fooo().aa 时抛出 foo() 类的对象并且它相当于这样做:

>>> m=fooo()
>>> m.a
[]

;在使用符号 fooo.a 时,我们期望 a 是一个类/静态变量?我是对的还是其他原因?

【问题讨论】:

  • 基本上,是的。您不应该将fooo().a 本身视为一种符号;它是两个独立事物的组合。正如在您的第二个示例中,fooo() 自己创建了一个实例。然后.a 访问它的属性。

标签: python oop python-2.7 python-3.x


【解决方案1】:

a 是一个实例属性。可以使用fooo().a 访问它。但请注意,这样做只会丢弃创建的 fooo 实例;一个更明智的例子是:

y = fooo()
y.a = 5

在创建类的实例之前它不存在。是的,你完全正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2020-11-20
    相关资源
    最近更新 更多