2011-03-03 59 views
0

嘿,我是一名python新手,我试图在类的构造函数中设置字典,每当我尝试访问元素时,它都会返回None。这里是我的代码在构造函数中设置字典(python)

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) 
    } 

现在每当我试图从它返回无其他一些方法来访问self.pre_defined_macros [“_ TITLE”。

+0

下划线意味着私有变量。没有下划线时会发生什么情况。 – 2011-03-03 06:03:49

+0

@ doc_180:不在字典中。 – 2011-03-03 06:04:35

+0

@ignacio,是的。我正在睡觉回答。 – 2011-03-03 06:09:23

回答

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 2011-03-03 06:12:01

+0

对不起!实际上,“_TITLE”:“Shoutout”正常工作,但当'_TITLE'= self.title时,它会返回None,就像我与'_DESCRIPTION'和'_NAME' – Utsav 2011-03-03 06:14:40

0

啊......明白了!

其实我已经设置

self.title = None 

所以在创建字典

'_TITLE': self.title 

无是 '_title'

缺乏浓度值!