EDIT: Thanks for the information about the class attributes. I understand these are similar to static in other OO languages. Now in the following code, I wish to use the __init__ of the base classes to set x and y in the derived class. Any guidance would be appreciated.
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:
Related to Multiple inheritance: The derived class gets attributes from one base class only?
Now, what is happening in the following example (dictionary of d is empty):
class Base1: x = 10 class Base2: y = 10 class Derv (Base1, Base2): pass d=Derv() print (d.__dict__) Although this works when we change the code to following:
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 I think this is more because of defining x and y in the __init__ method of Derv. But, if I wish to set the values using base class constructors, what is the correct way?