python - __init__ 中的 UnboundLocalError

标签 python oop constructor init

我开始学习python,看不懂,错误在哪里

class Gun(object):
    def __init__(self, magazine=6):
        self.__dict__["magazine"] = magazine
        self.__dict__["ammo"] = ammo

错误日志

self.__dict__["ammo"] = ammo
UnboundLocalError: local variable 'ammo' referenced before assignment

最佳答案

错误出现在您的 __init__ 参数中。参数定义中没有ammo

尝试以下操作:

class Gun(object):
    def __init__(self, magazine=6, ammo=5): # Now there is!
        self.__dict__["magazine"] = magazine
        self.__dict__["ammo"] = ammo

我建议不要修改对象__dict__。只需创建一个实例变量,它们做同样的事情,但代码更具可读性。

class Gun(object):
    def __init__(self, magazine=6, ammo=5):
        self.magazine = magazine
        self.ammo = ammo

In [3]: gun = Gun()

In [4]: gun.ammo
Out[4]: 5

In [5]: gun.magazine
Out[5]: 6

当然,您应该阅读 official tutorial on classes

关于python - __init__ 中的 UnboundLocalError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22787012/

相关文章:

java - 术语 : What do you call a function that does not change object state?

c# - 继承时使用基类

c++ - Cython 和重载的 c++ 构造函数

c# - 当您正在测试的类在 C# 中使用反射时如何使用假货进行单元测试

java - 为什么处理(Java)中的这个静态属性会引发错误?

python - 在 for 循环中添加 Pandas 列值?

python - 根据其他数据帧中的值检索一行数据帧中的值

Python - 排列和百分比

C++ 为什么这个可以抛出?

python - Django 表单字段 : Styling for Bootstrap without losing functionality?