2011-11-30 4 views
-2
class Test1: 
    def __init__(self): 
     self.x = 1 

class Test2(Test1): 
    # how can I get parent class's self.x ?? 
    # exactly here not def __init__(self) or other methods in Test2.. 

제발 ... 나는 부모 클래스 '자기를 얻는 방법을 알아내는 시간을 보냈다! 실패했습니다 .. 파이썬 전문가가 필요합니다!부모 클래스 '자아를 어떻게 얻을 수 있습니까?

+1

왜 "부모 클래스의 self.x"가 필요한지 설명 할 수 있습니까? – seb

답변

2

원하십니까?

class Test1: 
    def __init__(self): 
     self.x = 1 

class Test2(Test1): 
    def __init__(self): 
     Test1.__init__(self) 
     print self.x 

a = Test2() 

Test2 개체에 x 특성이 있으므로 Test2에서 self.x에 액세스 할 수 있습니다. 그것은 Test1 이니셜 라이저에서 작성됩니다.

편집 : 저자가 내 오해를 설명 한 후에 x가 인스턴스 멤버이고 클래스 1이 아니기 때문에 요청 된 것을 수행 할 수 없습니다. gecco의 답변을 참조하십시오.

+0

미안하지만 .. 내 말은 .. 아니 ... "def __init __ (self)"가 아니라 클래스 정의 부분 .. "class Test2" – Anderson

+0

그러면 gecco의 답변이 올바른 것입니다. –

+0

고마워요. 티아고 Chaves – Anderson

2

이것은 불가능합니다. self.x은 인스턴스 변수입니다. 인스턴스 변수는 instance-methods 내에서만 액세스 할 수 있습니다. 외부 메서드는 정적 컨텍스트에 있습니다.

이 (순수 클래스 변수 (없는 경우)) 수행 할 수없는 객체가없는 클래스 정의의 시점에서

class Test1: 
    x = 1 

class Test2: 
    y = Test1.x 
+0

고마워 .. 흠 .. 나는 다른 길을 찾을 필요가있어 .. 고마워. – Anderson

2

을, 그래서 self 없다 - self은 내부에 의미가 회원 기능. 어쨌든 클래스 정의에서 self.x으로 무엇을 원합니까?

+0

사실 .. 나는 이것을 알아 낸다. [link] (http://stackoverflow.com/questions/8326361/using-key-as-value-in-mongoengine) 아마 해킹이 필요할 것 같다. 아마도. – Anderson

+0

@WebEngineer :이 질문은 이해하기 어렵지만, 내가 볼 수있는 한이를 해결하기 위해 메타 클래스를 조사해야합니다. –

+0

고맙습니다. 비요른 폴렉스. – Anderson

관련 문제