2014-12-02 43 views
0

所以我有一篇文章類模型在商店中的物品。當我創建一篇新文章時,我希望它有一個EAN 13代碼。因此,我用12位數字代碼初始化文章,並使用check_ean13()函數來檢索控制數字。它可以工作,但似乎在任何時候,創建對象時,重寫ean13屬性並將其替換爲None。有任何想法嗎?設置一個屬性在創建檢索無價值 - Python的

主要

if __name__ == "__main__": 

    # create article 
    art1 = Article("123456789087", "Article 1", 145.6, 200.0) 

    print art1 
    print art1.get_ean13() 

類文章

class Article: 
    def __init__(self, cod, art_name, cost, listprice): 
     self.ean13 = self.set_ean13(cod) 
     self.art_name = art_name 
     self.cost = cost 
     self.listprice = listprice 
     self.commission = None 
     self.promotion=[] 

    def get_ean13(self): 
     return self.ean13 

    def set_ean13(self,cod): 
     cd = self.check_ean13(cod) 
     ean13 = cod + str(cd) 
     self.ean13=ean13 

    def check_ean13(self, code): 
     checksum = 0 
     for i, digit in enumerate(reversed(code)): 
      checksum += int(digit) * 3 if (i % 2 == 0) else int(digit) 
     return (10 - (checksum % 10)) % 10 

輸出:

None - Article 1 list price: 400.0 
None 

回答

1
self.ean13 = self.set_ean13(cod) 

set_ean13不返回任何東西,所以你切實做好self.ean13 = None他回覆。只需調用該方法而不分配結果。

self.set_ean13(cod) 
+0

我不能相信我沒有看到!謝謝 – user3441996 2014-12-02 18:24:26

相關問題