尝试访问 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():
应该是你要找的。
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():
应该是你要找的。