python - 在 Python 中调用实例变量时遇到问题

标签 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’”

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

最佳答案

您正在为您的类和变量使用相同的名称。 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']

关于python - 在 Python 中调用实例变量时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10536825/

相关文章:

python - 最有效地实例化一个类的多个对象

java - 难以理解对象状态、行为和身份?

python - 并行 Python - 在并行执行中将对象创建到另一个类中

javascript - 如果键等于变量,如何显示值

python - 尊重 argparse 隐私,并且。可用性

python - pip install mysql-python 失败,EnvironmentError : mysql_config not found

python - 我如何通过 pysftp 监视文件传输的进度

python - 覆盖python中的递归方法

python - 从另一个类访问方法变量

c# - MustInherit 和抽象类的区别