Классы используют одни и те же свойстваPython

Программы на Python
Ответить
Anonymous
 Классы используют одни и те же свойства

Сообщение Anonymous »

У меня есть простой фрагмент кода. В ней я делаю 2 животных кота и паука. У них разное количество ног и глаз. Я просто хочу распечатать эти данные.

Код: Выделить всё

class Legs:
def __init__(self, amount):
self.amount = amount

def legsInfo(self):
return f"{self.amount} legs"

class Eyes:
def __init__(self, amount):
self.amount = amount

def eyesInfo(self):
return f"{self.amount} eyes"

class Animal(Legs, Eyes):
def __init__(self, name, legs_amount, eyes_amount):
self.name = name
Legs.__init__(self, legs_amount)
Eyes.__init__(self, eyes_amount)

def legsInfo(self):
return super().legsInfo()

def eyesInfo(self):
return super().eyesInfo()

# Objects
cat = Animal("Tom", 4, 2)
spider = Animal("Webster", 8, 6)

# Test de output
print(cat.legsInfo())     # 2 legs ERROR
print(cat.eyesInfo())     # 2 eyes
print(spider.legsInfo())  # 6 legs ERROR
print(spider.eyesInfo())  # 6 eyes
Похоже, что, поскольку количество свойств используется в обоих классах, это значение является общим. Что мне кажется очень странным, это разные классы, поэтому делиться не нужно.
Это ошибка Python или какая-то «особенность»?Я изменил имя суммы на LegAmount и EyeAmount, и тогда все работает нормально. Я хочу определить/указать/установить переменную суммы как «только для этого класса» или что-то в этом роде.

Подробнее здесь: https://stackoverflow.com/questions/792 ... properties
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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