在create上设置属性检索无值 - Python

时间:2014-12-02 18:16:02

标签: python-2.7

所以我有一个Article类来模拟商店中的文章。当我创建一篇新文章时,我希望它有一个EAN 13代码。因此,我使用12位代码初始化文章,并使用check_ean13()函数来检索控制数字。它工作但似乎在任何时刻,当创建对象时,重写ean13属性并将其替换为None。有什么想法吗?

主要

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 个答案:

答案 0 :(得分:1)

self.ean13 = self.set_ean13(cod)

set_ean13不会返回任何内容,因此您可以在此处有效地执行self.ean13 = None。只需调用方法而不指定结果。

self.set_ean13(cod)