python - 有没有办法打印在 __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
有可能吗?
感谢您的时间。
解决方案
如果要在对象本身中执行此操作,请结合使用类变量和静态方法:
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__
,但这可能超出了这个问题的范围。
推荐阅读
- c++ - 加载共享库时出错:libboost_program_options.so.1.65.1
- java - Java regex - 首先需要是字母 X(不区分大小写)其余数字
- python - 稀疏行矩阵会有助于此代码的计算速度吗?
- bash - 使用分隔符将多个文件合并到一个单行文件中
- python - Mac Pycharm 解释器不工作
- c# - c# mvc - 授权ajax函数
- database - ArangoDB 中的一对一和一对多数据格式
- r - 字符向量中的两个 PASTE 函数
- ansible - Ansible 标准循环不工作
- localhost - 让 WAMPSERVER 在线但隐藏其服务器的索引文件