2011-03-03 3 views
0

안녕하세요 저는 파이썬 신참입니다. 클래스에 생성자를 설치하려고합니다. 요소에 액세스하려고 할 때마다 없음을 반환합니다. 나는 그것이 None을 돌려 다른 방법에서 self.pre_defined_macros [ '_ TITLE을']에 액세스하려고 할 때마다 지금 여기 내 코드생성자 (파이썬)에서 사전 설정하기

class GoogleApp: 

    def __init__(self, path): 
    self.name = "Google App" 
    self.description = "Creates an new google app project." 
    self.title = None 
    self.path = path 
    self.pre_defined_macros = { 
     '_NAME': self.name , 
     '_DESCRIPTION': self.description, 
     '_TITLE': "Shoutout", 
     '_BASE_PATH': self.path, 
     '_PATH': lambda: os.path.join(self.path, self.title) 
    } 

입니다.

+0

밑줄은 개인 변수를 의미합니다. 당신이 밑줄없이 줄 때 어떻게됩니까? –

+0

@ doc_180 : dict 키에 없습니다. –

+0

@ignacio, 맞습니다. 나는 졸리는 방법이다. –

답변

1

샘플 코드를 게시 할 수 있습니까?

나는 당신이 무엇을하려고하는지 잘 모르기 때문에 이것을 묻습니다. 내가 그것을 테스트했을 때 <instance>.pre_defined_macros['_TITLE']은 잘 작동했다.

>>> class GoogleApp: 

    def __init__(self, path): 
    self.name = "Google App" 
    self.description = "Creates an new google app project." 
    self.title = None 
    self.path = path 
    self.pre_defined_macros = { 
     '_NAME': self.name , 
     '_DESCRIPTION': self.description, 
     '_TITLE': "Shoutout", 
     '_BASE_PATH': self.path, 
     '_PATH': lambda: os.path.join(self.path, self.title) 
    } 


>>> f = GoogleApp('foo') 
>>> f.pre_defined_macros['_TITLE'] 
'Shoutout' 
>>> 

또 다른 방법으로 pre_defined_macros에 액세스하려고했습니다. 좋아요 :

>>> class GoogleApp: 
    def __init__(self, path): 
     # Your original code here. 
    def get_title(self): 
     return self.pre_defined_macros['_TITLE'] 


>>> f = GoogleApp('foo') 
>>> f.get_title() 
'Shoutout' 
>>> 
+0

죄송합니다! 사실 '_TITLE': "Shoutout" – Utsav

+0

죄송합니다! 사실 '_TITLE': 'Shoutout'은 '_ _TESLE'및 '_NAME'과 같은 문제가있는 것처럼 '_TITLE'= self.title 일 때 아무 것도 반환하지 않습니다. – Utsav

0

아아 ... 알았습니다!

는 사실은 내가

'_TITLE': self.title 

없음 '_title'농도의

부족에 대한 값입니다 사전을 만드는 그래서 동안

self.title = None 

를 설정 한!

관련 문제