Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 _u_init中的UnboundLocalError___Python_Oop_Constructor_Init - Fatal编程技术网

Python _u_init中的UnboundLocalError__

Python _u_init中的UnboundLocalError__,python,oop,constructor,init,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 befo

我开始学习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

没有像
ammo
这样的变量。您只通过了
杂志
,这就是为什么
杂志
行没有问题的原因。请尝试以下方法:

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

没有像
ammo
这样的变量。您只通过了
杂志
,这就是为什么
杂志
行没有问题的原因。请尝试以下方法:

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

错误在
\uuuu init\uuu
参数中。参数定义中没有
ammo

请尝试以下操作:

class Gun(object):
    def __init__(self, magazine=6, ammo=5): # Now there is!
        self.__dict__["magazine"] = magazine
        self.__dict__["ammo"] = ammo
我建议不要修改对象。只要创建一个实例变量,它们就可以做同样的事情,但代码可读性要高得多

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

当然,您应该阅读错误在
\uuu init\uuu
参数中。参数定义中没有
ammo

请尝试以下操作:

class Gun(object):
    def __init__(self, magazine=6, ammo=5): # Now there is!
        self.__dict__["magazine"] = magazine
        self.__dict__["ammo"] = ammo
我建议不要修改对象。只要创建一个实例变量,它们就可以做同样的事情,但代码可读性要高得多

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
当然,你应该阅读