UnboundLocalError: local variable 'temperature' referenced before assignment in the member function after creating a constructor?

UnboundLocalError: local variable 'temperature' referenced before assignment in the member function after creating a constructor?

我是 Python 的新手,当 运行 这个 Python class:

时我遇到了这些错误

我正在使用 PyScripter,我是 运行 Python 3.9(64 位)

我创建了 class 加热器,初始化了一个变量 temperature,以及一些修改此变量的函数。

然后我创建了一个对象并使用了函数然后它给了我一个错误!

class Heater :
    temperature  = 0

    def __init__(self):
        temperature = 20

    def warmer(self):
        temperature += 5

    def cooler(self):
        temperature -= 5

    def display(self):
        print ("Temperature is " , self.temperature)

h1 = Heater()

h1.display()
h1.cooler()
h1.display()
h1.warmer()
h1.display()

我收到以下输出,然后出现此错误:

Temperature is  0
Traceback (most recent call last):
  File "<module1>", line 30, in <module>
  File "<module1>", line 22, in cooler
UnboundLocalError: local variable 'temperature' referenced before assignment

我将 temperature = 0 更改为 nonlocal temperature 然后我收到此错误:

  File "<module1>", line 13
SyntaxError: no binding for nonlocal 'temperature' found

查看您的代码后,我注意到您正在尝试仅使用 temperature.

访问 self.temperature

每个方法接收的第一个参数 (self) 是对象本身的引用,用于访问对象属性和方法。