__repr__ не печатает вывод для класса Python [закрыто]Python

Программы на Python
Anonymous
__repr__ не печатает вывод для класса Python [закрыто]

Сообщение Anonymous »


Новичок в классах Python, и я не получаю ожидаемого результата при вызове repr() для экземпляров класса. Вот код глупого примера, который я придумал в рамках курса, который прохожу. Что касается примеров, то все выдумано и не соответствует действительности. Для краткости я вырезал некоторые атрибуты. Вот что у меня пока получилось.

класс Транспортное средство: сделать = Нет модель = Нет def __init__(собственность, марка, модель): self.make = сделать self.model = модель защита __str__(сам): вернуть f"{self.make}, {self.model}" защита __repr__(сам): return (f"Транспортное средство(make={self.make}, model={self.model}") класс автомобиля(транспортного средства): def __init__(self, make, model, numGears, numDoors): super().__init__(производитель, модель) self.numGears = numGears self.numDoors = число дверей защита __str__(сам): return f"{self.make}, {self.model}, {self.numGears}, {self.numDoors}" защита __repr__(сам): return (f"Car(make={self.make}, model={self.model}, numGears={self.numGears}, numDoors={self.numDoors}") Vantage = Автомобиль('Audi', 'Vantage', 6, 3) Щит = Автомобиль('Ауди', 'Щит', 160, 5, 5) Вот в чем проблема. Я хотел бы иметь возможность выбирать тип транспортного средства (легковые автомобили, грузовики, лодки, велосипеды, я не включил их для краткости), затем я хотел бы иметь возможность выбирать марку и, исходя из выбор, распечатывайте/визуализируйте только модели, относящиеся к этой марке. Вот что у меня получилось:

if type == VehicleTypes[0]: # Выбирает автомобили print(f'Доступные марки: {carMakes[0]}, {carMakes[1]}, {carMakes[2]}, {carMakes[3]}, {carMakes[4]}') #carMakes — это список всех доступные марки make=input('Выберите марку: ').title() если make == carMakes[0]: репр(Vantage) репр(Щит) Однако код ничего не печатает/не показывает, и мне пришлось заменить два вызова repr() следующим образом, чтобы фактически получить доступ к атрибутам этих двух экземпляров (я тоже пробовал использовать str(), но тоже безрезультатно) ):

if type == VehicleTypes[0]: print(f'Доступные марки: {carMakes[0]}, {carMakes[1]}, {carMakes[2]}, {carMakes[3]}, {carMakes[4]}') make=input('Выберите марку: ').title() если make == carMakes[0]: print(f'Make: {Vantage.make}, Модель: {Vantage.model}, Количество передач: {Vantage.numGears}, Количество дверей: {Vantage.numDoors}') print(f'Make: {Shield.make}, Модель: {Shield.model}, Количество передач: {Shield.numGears}, Количество дверей: {Shield.numDoors}') Я задавал похожие вопросы, но не смог найти ничего подходящего. Если я вызываю repr() и/или str() в одном из этих двух экземпляров вне блока if, они оба работают нормально. Спасибо за любую информацию.

Вернуться в «Python»