Вы можете получить эффект от того, что вы хотите сделать, используя свойства. В приведенном ниже примере используется небольшая служебная функция с именем alias()
, помогающая минимизировать повторяющийся код.
При использовании, как показано, он «перенаправляет» доступ к имени уровня класса, которому он назначен, и имени, переданного ему в качестве аргумента. Это означает, что m = alias('i')
сделает m
псевдонимом для i
.
def alias(attrname):
@property
def prop(self):
return getattr(self, attrname)
@prop.setter
def prop(self, value):
setattr(self, attrname, value)
return prop
class Parent:
def __init__(self, i, j):
self.i = i
self.j = j
class Child(Parent):
m = alias('i')
n = alias('j')
def func(self):
print(self.m, self.n)
Child(1,2).func() # -> 1 2