2014-11-04 127 views
0

传递字典对象我有许多功能的类。在一个函数中,我想创建一个字典对象并将该函数调用到另一个函数中。该字典是否可以明确传递?呼叫/ Python中

这里是我以前做的一个例子:

def dict_function(self): 
    dictionary = dict() 
    dictionary['sky'] = 'blue' 
    dictionary['clouds'] = 'white' 
    dictionary['grass'] = 'green' 
    return dictionary 

然而,到现在为止我一直在呼吁在其他功能字典对象是这样的:

def process_function(self): 
     obj = self.dict_function() 
     print obj['sky'] 

有没有更好的办法调用process_function中的变量?

+1

我不这么认为;我会以这种方式去做。 – 2014-11-04 19:05:23

+1

你多久使用一次字典?如果不止一次,您可能需要在'__init__''函数中设置它并访问像'''self.dictionary ['sky']'''的值以避免重新创建。 – user2108599 2014-11-04 19:10:38

+0

它只能使用一次,而不是一成不变的,它正不断地再生,这就是为什么我没有把它的__init__感谢您的洞察力虽然 – user3614014 2014-11-05 15:46:16

回答

1

Python有字典的文字,这是速度更快,更漂亮不是构造它来阅读通过单独设置按键。

def dict_function(self): 
    return { 
     'sky': 'blue' 
     'clouds': 'white' 
     'grass': 'green' 
    } 

正如评论所说,如果字典是静态的这个样子,没有理由有一个功能,只需存储字典和访问它。

你想重新创建字典,如果你打算变异字典中的每个使用它时,每次会是这样,没有这种影响在未来使用的唯一原因。这听起来像你的用例,但是,只需要你在其他函数中访问字典。

class Something: 
    def __init__(self): 
     self.colours = { 
      'sky': 'blue' 
      'clouds': 'white' 
      'grass': 'green' 
     } 

    def draw(): 
     screen.rect(100, 100, 200, 300, self.colours["sky"]) 
     ... 
+0

尽管这并不是我期望的简单性,但我确实喜欢你给出的例子,这些例子帮助我展示了不同的方式来完成我所要做的事情。谢谢! – user3614014 2014-11-05 15:47:06

1

首先声明它:

self.dictionary = dict() 

填充它

def dict_function(self): 
    dictionary['sky'] = 'blue' 
    dictionary['clouds'] = 'white' 
    dictionary['grass'] = 'green' 
    return dictionary 

重用

def process_function(self): 
     obj = self.dictionary 
     print obj['sky'] 
+0

难道不该在dict_function self.dict的原因()代替字典?另外,为什么不直接在process_function中打印self.dict ['sky']? – 2014-11-04 19:21:54

+0

@KyleHannon哎呀我固定我的错字感谢 – meda 2014-11-04 19:22:44

+0

这不是从我在我的问题表现出显著不同... – user3614014 2014-11-04 20:02:14