UnboundLocalError: local variable 'range' referenced before assignment
作者:互联网
1. 报错信息
UnboundLocalError: local variable 'range' referenced before assignment
2. 代码
class Car(): """一次模拟汽车的简单尝试""" def __init__(self, make, model, year): """初始化描述汽车的属性""" self.make = make self.model = model self.year = year self.odometer_reading = 0 def get_descriptive_name(self): """返回整洁的描述性信息""" long_name = str(self.year) + ' ' + self.make + ' ' + self.model return long_name.title() def read_odometer(self): """打印一条指出汽车里程的消息""" print("This car has " + str(self.odometer_reading) + " miles on it.") def update_odometer(self, mileage): """将里程表读数设置为指定值""" self.odometer_reading = mileage """ 将里程表读数设置为指定的值, 禁止将里程表读数往回调 """ if mileage >= self.odometer_reading: self.odometer_reading = mileage else: print("You can't roll back an odometer!") def increment_odometer(self, miles): """将里程表读数增加指定的量""" self.odometer_reading += miles # my_used_car = Car('subaru', 'outback', 2013) # print(my_used_car.get_descriptive_name()) # # my_used_car.update_odometer(23500) # my_used_car.read_odometer() # # my_used_car.increment_odometer(100) # my_used_car.read_odometer() # my_new_car = Car('audi', 'a4', 2016) # print(my_new_car.get_descriptive_name()) # my_new_car.update_odometer(23) # # my_new_car.odometer_reading = 23 # my_new_car.read_odometer() class Battery(): """一次模拟电动汽车的属性""" def __init__(self, battery_size = 60): """初始化电瓶属性""" self.battery_size = battery_size def describle_battery(self): """打印一天描述电瓶容量的消息""" print("This car has a " + str(self.battery_size) + " -kWh battery.") def get_range(self): """打印一条描述电瓶续航里程的消息""" # range = 200 if self.battery_size == 70: range = 240 elif self.battery_size == 85: range = 270 message = "This car can go approximately " + str(range) message += " miles on a full charge." print(message) class ElectricCar(Car): """模拟电动汽车的独特之处""" def __init__(self, make, model, year): """初始化父类的属性,在初始化电动汽车特有属性""" super().__init__(make, model, year) self.battery = Battery()
from car import ElectricCar my_tesla = ElectricCar('tesla', 'model S', 2016) print(my_tesla.get_descriptive_name()) my_tesla.battery.describle_battery() my_tesla.battery.get_range( )
3. 解决方法
在get_range()方法中先定义一个range变量,然后进行逻辑运算
def get_range(self): """打印一条描述电瓶续航里程的消息""" range = 200 # 先定义变量,后进行运算 if self.battery_size == 70: range = 240 elif self.battery_size == 85: range = 270 message = "This car can go approximately " + str(range) message += " miles on a full charge." print(message)
4. 执行结果
D:\python编程:从入门到实践\venv\Scripts\python.exe D:/python编程:从入门到实践/my_electric_car.py 2016 Tesla Model S This car has a 60 -kWh battery. This car can go approximately 200 miles on a full charge. Process finished with exit code 0
标签:referenced,battery,assignment,self,odometer,range,car,UnboundLocalError,my 来源: https://www.cnblogs.com/kevin-hou1991/p/14802500.html