尝试访问 class 属性时出现 NameError

NameError when trying to access class attribute

class Flight():
    def __init__(self, capacity):
        self.capacity = capacity
        self.passengers = []
    def add_passenger(self, name):
        self.passengers.append(name)
    def check_availability(self):
        return self.capacity - len(self.passengers)

flight = Flight(3)
passengers_list = ["A", "B", "C", "D"]
for x in passengers_list:
    if not self.check_availability:
        print(f"Sorry! No seat for {person}!!")
    else:
        flight.add_passenger(person)
        print(f"Seat for {person} is successfully booked!!")

这是一个简单的 Python 代码,用于确保没有航班超售。但是当我尝试 运行 这段代码时,我得到了这个错误:

    if not self.check_availability:
NameError: name 'self' is not defined

我应该怎么做才能解决这个错误?

self 不是全局范围内的东西。

您将 flight 定义为航班,因此您需要 if not flight.check_availability:;然后 check_availability 是一个函数,所以你需要调用它。 (如果您不调用它,if 语句将始终为假,因为函数本质上是真实的。)

if not flight.check_availability():

这与您已经对 flight.add_passenger() 所做的类似。

您错误地将 self 放在 类 之外的代码中。您需要将 self 替换为 flight

if not flight.check_availability():

应该是你要找的。