2017-01-07 1 views
1

У меня есть класс Parent и Clild в Python 3 с некоторыми атрибутами, один из этих атрибутов - это сумма между другими.Получить атрибуты из родительского класса из дочернего элемента в Python 3

Родитель Класс:

class Parent: 
    ATRIBUTE1 = 'dad' 
    ATRIBUTE2 = ' good' 
    ATRIBUTE3 = ATRIBUTE1 + ATRIBUTE2 

Детский Класс:

class Child(Parent): 
    ATRIBUTE1 = 'son' 
    ATRIBUTE2 = ' bad' 

Я просто хочу наследовать ATRIBUTE3 в классе ребенка с теми же свойствами.

Ожидаемый результат:

>> parent.ATRIBUTE3 
'dad good' 

>> child.ATRIBUTE3 
'son bad' 

ответ

2

Вам нужна недвижимость.

class Parent: 
    ATRIBUTE1 = 'dad' 
    ATRIBUTE2 = ' good' 

    @property 
    def attribute3(self): 
     return self.ATRIBUTE1 + self.ATRIBUTE2 

Теперь parent.attribute3 и child.attribute3 даст вам результат, который вы хотите.

+1

Но это могло НЕ получить доступ как переменную класса, то есть как «Child.attribute3» –

+0

Спасибо большое! Это работает! – Gui

1

ATTRIBUTE3 оценивается во время создания класса и не пересчитывается при каждом доступе. Поэтому вы наследуете значение родителя, а не формулу.

Если вы хотите приписать значение пересчитывается при каждом доступе вы можете использовать @property:

class Parent: 
    ATRIBUTE1 = 'dad' 
    ATRIBUTE2 = ' good' 

    @property 
    def ATRIBUTE3(self): 
     return self.ATRIBUTE1 + self.ATRIBUTE2 

И вы можете получить доступ к этому так же, как и раньше (только хотя чтения):

print(child.ATTRIBUTE3) 

 Смежные вопросы

  • Нет связанных вопросов^_^