首页 > 解决方案 > 除了属性之外,Python 类方法还返回“无”

问题描述

我正在制作一个简单的方法,该方法将返回类属性值的列表。它工作正常,但在打印列表的末尾也总是显示“无”。我不确定为什么。任何澄清?

这是我的代码:播放器类

class Player:
    def __init__(self, name, caps, inventory, caravans):
        self.name = name
        self.caps = caps
        self.inventory = inventory
        self.caravans = caravans

Inventory 类及其方法,我指的是列表方法。

class Inventory:
    """Items are stored by value not quantity"""
    def __init__(self, weapons_ammo, meds_chems, armor):
        self.weapons_ammo = weapons_ammo
        self.meds_chems = meds_chems
        self.armor = armor

    def list(self):
        """List all inventory values."""
        print(f'Weapons & Ammo: {self.weapons_ammo}\n'
              f'Meds & Chems: {self.meds_chems}\n'
              f'Armor: {self.armor}')

实例

example_inventory = Inventory(5000, 2000, 1500)

example_player = Player('John', 10000, example_inventory, 3)

当我运行此代码时:

print(example_player.inventory.list())

我得到:

武器和弹药:5000 药物和化学品:2000 护甲:1500 无

但是当我在没有打印功能的情况下运行它时:

example_player.inventory.list()

我得到了我正在寻找的正确回报,最后是“无”。

谁能解释这是为什么?我假设它与已经调用打印函数的方法有关。

谢谢!

标签: pythonoop

解决方案


您专门print编辑了函数的返回值:

print(example_player.inventory.list())

您的list函数没有明确的返回;默认值为None. 这与函数内部有另一个无关print,只是你没有返回任何东西。

我认为您要做的就是执行该功能:

example_player.inventory.list()

顺便说一句,“隐藏”内置类型是非常糟糕的形式:不要list用作函数名。诸如此类的东西show_inventory会更好。


推荐阅读