首页 > 解决方案 > 有没有办法打印在 __init__ 方法中创建的对象的所有参数?

问题描述

这是我正在处理的代码。我创建了一些用户,给他们一个名字、姓氏和一个值。

有没有办法返回并打印所有,例如,我创建的每个用户的名称?

class Bacheca:

    def __init__(self, name, surname, value):
        self.name = name
        self.surname = surname
        self.value = value

user1 = Bacheca("John", "Black", 1)
user2 = Bacheca("Mark", "Green", 2)
user3 = Bacheca("Phil", "White", 3)

例如,我希望打印每个用户的所有名称:

John 
Mark
Phil

有可能吗?

感谢您的时间。

标签: pythonpython-3.xclass

解决方案


如果要在对象本身中执行此操作,请结合使用类变量和静态方法:

class Bacheca:

    created_users = []

    def __init__(self, name, surname, value):
        self.name = name
        self.surname = surname
        self.value = value
        Bacheca.created_users.append(self)

    @staticmethod
    def created():
        return Bacheca.created_users

user1 = Bacheca("John", "Black", 1)
user2 = Bacheca("Mark", "Green", 2)
user3 = Bacheca("Phil", "White", 3)
print([user.name for user in Bacheca.created()])

输出:

['John', 'Mark', 'Phil']

每次__init__被调用(用于初始化新实例),创建的对象将被附加到created_users,这是的变量,而不是实例。因此,它持久地保存对已创建的每个实例的引用。

你可以添加更多的花里胡哨,比如说,覆盖__del__,但这可能超出了这个问题的范围。


推荐阅读