2015-10-18 75 views
1

我是一個Python新手,所以我提前道歉可能是一個愚蠢的問題。 我寫了一個函數,將字母表中的每個字母映射到其對應的素數。該功能工作正常。Python函數不會在__init__中調用

我遇到的問題是我想創建一個字典,然後設置'字典'變量的'populateprimelist'函數的結果返回字典。我正在嘗試在'init'函數中執行此操作,我知道它等同於Java構造函數。但是,當我在main方法中打印出'dictionary'變量時,它是空的。

dictionary = dict() 


def __init__(self): 

    dictionary = self.populateprimelist() 


def populateprimelist(): 
    primelist = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101] 
    alphabet = "abcdefghijklmnopqrstuvwxyz" 

    tempdict = dict() 

    for index in range(len(alphabet)): 
     tempdict[(alphabet[index])] = (primelist[index]) 

    return tempdict 


if __name__ == '__main__': 
    print(dictionary) 
+0

什麼辦法'__init__'辦? –

+0

我得到的印象是,Java已經習慣了一個類對應於一個文件的想法。在python中,你可以編寫沒有任何類的代碼,它只是作爲一系列語句來執行。 –

+0

btw:你可以使用'return dict(zip(list(alphabet),primelist))'而不是for循環 – Ofir

回答

3

__init__class使用---你沒有在這裏定義的類。檢出this answer

大概你想把你的__init__populateprimelist函數放入class。或者,你實際上並不需要在這裏定義一個類,你可以創建你的「黃金名單」字典,一個正常的函數調用:

if __name__ == '__main__': 
    dictionary = populateprimelist() 
    print(dictionary) 

你不需要self,因爲沒有自定義類正在使用。

你也不需要首先字典初始化dictionary = dict()

+0

我想補充一點(對於OP的理解)你不能擁有一個Java構造函數班級。 –