Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中调用实例变量时遇到问题_Python_Class_Object_Python 2.7_Instance Variables - Fatal编程技术网

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

在Python中调用实例变量时遇到问题,python,class,object,python-2.7,instance-variables,Python,Class,Object,Python 2.7,Instance Variables,我现在刚开始在课堂上学习,我遇到了一些我不明白的事情。假设我有一门课 class Area(object): def __init__(self, name, items): self.name = name self.items = items 现在,如果我以这种方式启动区域的实例: impala = Area("Impala", ["shotgun", "salt"]) class impala(Area): def __init__(se

我现在刚开始在课堂上学习,我遇到了一些我不明白的事情。假设我有一门课

class Area(object):
    def __init__(self, name, items):
        self.name = name
        self.items = items
现在,如果我以这种方式启动区域的实例:

impala = Area("Impala", ["shotgun", "salt"])
class impala(Area):
    def __init__(self):
        self.name = "Impala"
        self.items = ["shotgun", "salt"]
然后调用一个变量,比如:

print impala.items
它很好用。但是,如果我尝试以这种方式启动:

impala = Area("Impala", ["shotgun", "salt"])
class impala(Area):
    def __init__(self):
        self.name = "Impala"
        self.items = ["shotgun", "salt"]
然后尝试做同样的事情,它给了我一个错误:类型对象“impala”没有属性“items”


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

您的类和变量使用了相同的名称。impala和impala,我假设Python正在访问类,而不是实例

为了避免这种情况,我建议在变量名中使用以下内容:用大写字母表示类名称,用小写字母_加下划线表示局部变量。当然,在命名项目时也应该小心,不要在同一名称空间中有两个名称相同的项目

>>> 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']

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

为了避免这种情况,我建议在变量名中使用以下内容:用大写字母表示类名称,用小写字母_加下划线表示局部变量。当然,在命名项目时也应该小心,不要在同一名称空间中有两个名称相同的项目

>>> 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']

类impalaArea不创建Area的实例。它定义了一个叫做黑斑羚的区域的子类!谢谢:您从未创建过第二个类的实例。也许我误解了您的问题,但您似乎混淆了继承和实例化。类impalaArea不创建Area的实例。它定义了一个叫做黑斑羚的区域的子类!谢谢:您从未创建过第二个类的实例。也许我误解了你的问题,但看起来你把继承和实例化混淆了。好吧,所以Impala是一个子类,而不是一个实例。明白了,谢谢你的链接@厕所用具。你的解释忽略了Jen Camara没有创建一个实例,这是关键问题。@StevenRumbalski说实话,我不明白他想做什么。不过,我现在不会重复评论中已经说过的内容了。好吧,黑斑羚是一个子类,而不是一个实例。明白了,谢谢你的链接@厕所用具。你的解释忽略了Jen Camara没有创建一个实例,这是关键问题。@StevenRumbalski说实话,我不明白他想做什么。不过,我现在不会重复评论中已经说过的话。