2012-03-31 2 views
0

__init__ 외부 클래스의 인스턴스 var에 액세스하려고하는데 막혔습니다. 내가 print self.nombre 주석을 제거하면해당 클래스에서 Python 인스턴스 var에 액세스

import sys 

class Borg(object): 
    __shared_state = {} 
    def __init__(self, nombre): 
     self.__dict__ = self.__shared_state 
     self.nombre = nombre 

     print 'my instance vr::', self.nombre 

     # panga = 'pangas' 

    panga = 'pangas' 


    print 'te copio con ' 


    print panga 

    #print self.nombre 


pingus = Borg('varString') 


print pingus.nombre 

, 나는 "self.nombre가 인식되지 않습니다"라는거야?

어떻게이 var에 액세스합니까?

+1

귀하의 들여 쓰기는 클래스 내에 인쇄 문을 실행하고 있기 때문에, 엉망이 될 것 같습니다 당신 브레에 액세스하려면 먼저 개체를 생성 할 필요가 정의. (그리고'import sys '의 들여 쓰기 역시 잘못된 것입니다.) – alan

답변

4

이 방법이 더 효과적 일 수 있습니다. 당신은 같은 방법으로 해당 코드를 캡슐화한다 : 당신이 객체가 아직 구축되지 않는

print self.nombre 

를 호출하는 경우

import sys 

class Borg(object): 
    __shared_state = {} 
    def __init__(self, nombre): 
     self.__dict__ = self.__shared_state 
     self.nombre = nombre 

    def instance_method_1(self): 
     print 'my instance vr::', self.nombre 
     panga = 'pangas' 
     print 'te copio con ' 
     print panga 
     print self.nombre 


pingus = Borg('varString') 


print pingus.nombre 
pingus.instance_method_1() 
1

자유형 코드는 파이썬 클래스로 사용할 수 없습니다. 다른 메소드에서 self.nombre에 액세스 할 수 있습니다.

def foo(self): 
    print self.nombre 
+3

글쎄, 파이썬 클래스에서 독립적 인 코드를 가질 수는 있지만 클래스가 정의 될 때 실행되고 인스턴스화 될 때 실행되지 않습니다. 이 시점에서'self'는 정의되지 않았습니다. – kindall

0

그래서 거기에 (즉, 문이 평가 보그의 어떤 인스턴스가 없음) 자기도 아니고 비참하지도 않다.

pingus = Borg("varString") 

다음 액세스 브레 :

print pingus.nombre