Как наследовать свойства переменной-члена в хост-классе? - PullRequest
0 голосов
/ 03 августа 2011

Представьте себе следующий код:

class X(object):
    def geta(self):
        return self.__a

    def seta(self, v):
        self.__a = v

    def __init__(self, a=0):
        self.__a = a

    a = property(geta, seta)

class Y(object):
    def __init__(self, v):
        self.X = X(v)

    # !!! Here, not sure how to do it
    a = X.a


x = X(12)

print x.a
x.a = 2
print x.a

print "-" * 79

y = Y(2)

print y.a

По сути, я хочу, чтобы class Y наследовал class X свойства.Так что Y.a на самом деле перейдет к Y.X.a.Поэтому, если я скажу: y = Y(2), а затем y.a = 2, все должно быть так, как если бы я сделал y.X.a = 2.

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Добавьте это к Y:

def __getattr__(self, attr):
    return getattr(self.X, attr)

Теперь все неразрешенные ссылки на атрибуты для экземпляра Y будут перенаправлены на содержащийся в нем X.

1 голос
/ 03 августа 2011

Свойства наследуются как любой другой атрибут ... если вы на самом деле наследуете от класса. Что с этим не так?

class Y(X): pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...