2013-08-30 5 views
14

Я хотел бы получить доступ к значению self.x в дочернем классе. Как мне получить к нему доступ?python, получающий доступ к переменной суперкласса в дочернем классе

class ParentClass(object): 

    def __init__(self): 
     self.x = [1,2,3] 

    def test(self): 
     print 'Im in parent class' 


class ChildClass(ParentClass): 

    def test(self): 
     super(ChildClass,self).test() 
     print "Value of x = ". self.x 


x = ChildClass() 
x.test() 
+1

Кстати, могли бы вы изменить ошибки отслеживающий в вопрос? Это помогло бы сделать этот вопрос более актуальным для будущих Googlers, так как это проблема не имеет ничего для суперклассов или дочерних классов. –

+0

Думаю, вам лучше указать название как «доступ к переменной экземпляра суперкласса из дочернего класса». Существует разница между переменной класса и переменной экземпляра в python. – Sean

ответ

13

Вы получили доступ к переменной суперкласса правильно; ваш код дает вам ошибку из-за того, как вы пытались ее распечатать. Вы использовали . для конкатенации строк вместо + и объединили строку и список. Измените строку

print "Value of x = ". self.x 

к любому из следующих действий:

print "Value of x = " + str(self.x) 
    print "Value of x =", self.x 
    print "Value of x = %s" % (self.x,) 
    print "Value of x = {0}".format(self.x) 
3
class Person(object): 
    def __init__(self): 
     self.name = "{} {}".format("First","Last") 

class Employee(Person): 
    def introduce(self): 
     print("Hi! My name is {}".format(self.name)) 

e = Employee() 
e.introduce() 

Hi! My name is First Last