所以我有一个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
答案 0 :(得分:1)
self.ean13 = self.set_ean13(cod)
set_ean13
不会返回任何内容,因此您可以在此处有效地执行self.ean13 = None
。只需调用方法而不指定结果。
self.set_ean13(cod)