在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说实话,我不明白他想做什么。不过,我现在不会重复评论中已经说过的话。