Проблема с унаследованными атрибутами в классе с несколькими базовыми классами - PullRequest
0 голосов
/ 24 октября 2018

РЕДАКТИРОВАТЬ: Спасибо за информацию об атрибутах класса.Я понимаю, что они похожи на статические в других языках ОО.Теперь в следующем коде я хочу использовать __init__ базовых классов для установки x и y в производном классе.Любое руководство будет оценено.

class Base1:
  def __init__(self, x):
      self.x = x

class Base2:
  def __init__(self, y):
      self.y = y

class Derv (Base1, Base2):
  def __init__(self, x, y):
      self.x = x
      self.y = y

OLD:

Относится к Множественное наследование: производный класс получает атрибуты только из одного базового класса?

Теперь, что происходит в следующем примере (словарь d пуст):

class Base1:
  x = 10

class Base2:
  y = 10

class Derv (Base1, Base2):
  pass


d=Derv()
print (d.__dict__)

Хотя это работает, когда мы изменяем код на следующее:

class Base1:
  x = 0
  def __init__(self, x):
      self.x = x

class Base2:
  y = 0
  def __init__(self, y):
      self.y = y

class Derv (Base1, Base2):
  def __init__(self, x, y):
      self.x = x
      self.y = y

Я думаю, что этобольше из-за определения x and y в методе __init__ для Derv.Но если я хочу установить значения с помощью конструкторов базового класса, каков правильный путь?

1 Ответ

0 голосов
/ 24 октября 2018

Самый простой и лучший: просто вызовите инициализаторы в каждой базе!

class Derv(Base1, Base2):
    def __init__(self, x, y):
        Base1.__init__(self, x)
        Base2.__init__(self, y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...