Python3中的NameError紧急

问题描述 投票:0回答:2

[我试图声明一个类变量蠕虫(列表),但是当我尝试在方法add_worms(name)方法中使用它时,它会抛出NameError,如下所示。

>>> class Fruit:
        worms = []
        def add_worms(self, name):
            global worms  
            worms.qppend(name)

>>> fruit = Fruit()
>>> fruit.add_worms("Crawly")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in add_worms
NameError: name 'worms' is not defined
python python-3.x global interpreter nameerror
2个回答
1
投票

名称worms被初始化为类属性,而不是模块级别的全局变量,因此应改为通过方法的self对象来引用它:

def add_worms(self, name):
    self.worms.append(name)

1
投票

当您在类的全局范围内定义变量时,可以使用self.my_variable访问它。根据您的情况,将代码更改为:

class Fruits:
    worms = []

    def add_worms(self,name):
        self.worms.append(name)

在您的情况下,您引用的是在类之外定义的变量worms,但由于此类变量不存在,因此您的代码将失败。

© www.soinside.com 2019 - 2024. All rights reserved.