无法在Python中调用实例变量

时间:2012-05-10 15:01:54

标签: python class object python-2.7 instance-variables

我现在才开始学习课程,我遇到了一些我不理解的事情。假设我有一个班级......

class Area(object):
    def __init__(self, name, items):
        self.name = name
        self.items = items

现在,如果我以这种方式启动Area实例:

impala = Area("Impala", ["shotgun", "salt"])

然后调用变量,说:

print impala.items

它运作得很好。但是,如果我尝试以这种方式启动它:

class impala(Area):
    def __init__(self):
        self.name = "Impala"
        self.items = ["shotgun", "salt"]

然后尝试做同样的事情它给我一个错误:“类型对象'impala'没有属性'items'”

有人可以告诉我在第二个例子中我做错了什么以及为什么会这样?

1 个答案:

答案 0 :(得分:4)

您为类和变量使用相同的名称。 impalaimpala,我认为Python正在访问类,而不是实例。

为避免这种情况,我建议您使用PEP-8作为变量名称,在CapWords和本地变量lowercase_with_underscores中提供类名称。当然,当您将项目命名为在同一名称空间中没有两个具有相同名称的内容时,您也应该小心。

>>> class Area(object):
...     def __init__(self, name, items):
...         self.name = name
...         self.items = items
... 
>>> class Impala(Area):
...     def __init__(self):
...         self.name = "Impala"
...         self.items = ["shotgun", "salt"]
... 
>>> impala = Impala()
>>> impala.items
['shotgun', 'salt']