Python 类的新手,在类的实例上调用 repr() 时,我没有得到预期的结果。这是我在正在学习的课程中提出的一个愚蠢示例的代码。至于实例,一切都是编造的,与现实不符。为了简洁起见,我删除了一些属性。这就是我到目前为止所得到的。
class Vehicle:
make=None
model=None
def __init__(self, make, model):
self.make = make
self.model = model
def __str__(self):
return f"{self.make}, {self.model}"
def __repr__(self):
return (f"Vehicle(make={self.make}, model={self.model}")
class Car(Vehicle):
def __init__(self, make, model, numGears, numDoors):
super().__init__(make, model)
self.numGears = numGears
self.numDoors = numDoors
def __str__(self):
return f"{self.make}, {self.model}, {self.numGears}, {self.numDoors}"
def __repr__(self):
return (f"Car(make={self.make}, model={self.model}, numGears={self.numGears}, numDoors={self.numDoors}")
Vantage = Car('Audi', 'Vantage', 6, 3)
Shield = Car('Audi', 'Shield', 160, 5, 5)
问题就在这里。我希望能够选择车辆类型(汽车、卡车、船、自行车,为了简洁起见,没有包括它们),然后我希望能够选择品牌,并根据选择,仅打印/可视化与该品牌相关的模型。这是我想到的:
if type == vehicleTypes[0]: # Selects Cars
print(f'Available makes: {carMakes[0]}, {carMakes[1]}, {carMakes[2]}, {carMakes[3]}, {carMakes[4]}') #carMakes is a list of all available makes
make=input('Select a make: ').title()
if make == carMakes[0]:
repr(Vantage)
repr(Shield)
但是代码不会打印/显示任何内容,我必须如下替换对 repr() 的两个调用才能实际访问这两个实例的属性(我也尝试过使用 str() 但也没有任何乐趣):
if type == vehicleTypes[0]:
print(f'Available makes: {carMakes[0]}, {carMakes[1]}, {carMakes[2]}, {carMakes[3]}, {carMakes[4]}')
make=input('Select a make: ').title()
if make == carMakes[0]:
print(f'Make: {Vantage.make}, Model: {Vantage.model}, Number of gears: {Vantage.numGears}, Number of doors: {Vantage.numDoors}')
print(f'Make: {Shield.make}, Model: {Shield.model}, Number of gears: {Shield.numGears}, Number of doors: {Shield.numDoors}')
我遇到了类似的问题,但找不到任何适用的问题。如果我在“if”块之外的这两个实例之一上调用 repr() 和/或 str() ,它们都可以正常工作。 感谢您的任何见解。
repr
返回一个字符串,表示传递给它的对象。如果你想打印出来,你需要调用print
就可以了:
print(repr(Vantage))
print(repr(Shield))