gpt4 book ai didi

python - 从定义的类中追加主列表

转载 作者:行者123 更新时间:2023-11-28 21:41:25 24 4
gpt4 key购买 nike

这个赋值的目的是在Python中定义一个类,并用它来创建一个对象并显示它的组件。我已经创建了一个创建库存项目并显示信息的类,但是我在主类中附加库存列表和显示用户友好信息时遇到了问题。我觉得这很容易实现,但我似乎无法弄清楚。这是我目前所拥有的。

class InventoryItem(object):
def __init__(self, description, unit_cost, items_in_stock):
self.description = description
self.unit_cost = unit_cost
self.items_in_stock = items_in_stock
print('Description: ' + self.description)
print('Item Costs: ' + str(self.unit_cost))
print('Number in stock: ' + str(self.items_in_stock))


if __name__ == '__main__':
inventory_list = []
cookies = InventoryItem('Cookies', 5.00, 24)

print(inventory_list)
inventory_list.append(cookies)
print(inventory_list)

我得到的输出是这样的:

Description: Cookies
Item Costs: 5.0
Number in stock: 24
[]
[<__main__.InventoryItem object at 0x00E85A10>]

第一部分是预期的,只是我不知道为什么它似乎显示了该数据的内存位置?任何帮助将不胜感激。

最佳答案

有两个魔法方法叫做 __str____repr__这意味着在这种情况下使用。默认情况下,如果没有被覆盖,打印一个对象只会以你看到的格式打印它的内存内容 <...> .

区别是什么? __repr__打印对象的表示(例如列表内部)。 __str__是你打电话时看到的 print()在那个物体上。

class InventoryItem(object):
def __init__(self, description, unit_cost, items_in_stock):
self.description = description
self.unit_cost = unit_cost
self.items_in_stock = items_in_stock

def __str__(self):
string = 'Description: ' + self.description + '\n'
string += 'Item Costs: ' + str(self.unit_cost) + '\n'
string += 'Number in stock: ' + str(self.items_in_stock)

return string

def __repr__(self):
return self.__str__()

if __name__ == '__main__':
inventory_list = []
cookies = InventoryItem('Cookies', 5.00, 24)

print(inventory_list)
inventory_list.append(cookies)
print(inventory_list)

输出:

[]
[Description: Cookies
Item Costs: 5.0
Number in stock: 24]

现在让我们在 __str__ 中稍微改变一下和 __repr__方法。这将帮助您了解两者之间的区别。

class InventoryItem(object):
...

def __str__(self):
string = 'Description: ' + self.description + '\n'
string += 'Item Costs: ' + str(self.unit_cost) + '\n'
string += 'Number in stock: ' + str(self.items_in_stock)

return string

def __repr__(self):
return 'Hi!'

if __name__ == '__main__':
inventory_list = []
cookies = InventoryItem('Cookies', 5.00, 24)

print(inventory_list)
inventory_list.append(cookies)
print(inventory_list)

这打印:

[]
[Hi!]

现在,如果您调用 print(cookies) ,你得到这个:

Description: Cookies
Item Costs: 5.0
Number in stock: 24

确保返回有效的 str来自这些方法的对象,如果您选择在您的类中实现它们。

关于python - 从定义的类中追加主列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44791225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com