Есть несколько различных способов сделать это, в зависимости от того, что именно вы пытаетесь сделать.
Если вы не определите __init__
метод для своего класса, он автоматически унаследует__init__
метод родительского класса.Например:
class A(object):
def __init__(self, my_var):
self.my_var = my_var
class B(A):
pass
class c(object):
def __init__(self, a):
print(a.my_var)
a = B(2)
d = C(a)
Если вы не хотите использовать метод __init__
, вы всегда можете попытаться определить значение по умолчанию для родительского класса.
class A(object):
DEFAULT_VALUE = 42
def __init__(self, my_var=None):
self.my_var = my_var or self.DEFAULT_VALUE
class B(A):
def __init__(foo, my_var=None):
super(B, self).__init__(foo, my_var)
class c(object):
def __init__(self, a):
print(a.my_var)
a = B(2)
d = C(a)
Или с помощьюглобальная переменная.Будьте бдительны.
MY_VAR = None
class A(object):
def __init__(self, my_var=None):
global MY_VAR
if MY_VAR is None:
MY_VAR = my_var
elif my_var and MY_VAR != my_var:
print("WARNING: Value of {my_var} for `my_var` being ignored")
else:
pass
self.my_var = MY_VAR
class B(A):
def __init__(self, foo, my_var=None):
super(B, self).__init__(my_var)
self._foo = foo
class C(object):
def __init__(self, a):
print(a.my_var)
a = A(42)
b = B("bar")
c = C(b)