用Python打印具有多个值的类

2024-04-20 14:17:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我花了很长时间在这个网站上搜索,所以我希望这个问题没有被问过-道歉,如果有。我是第一次学习类,我正在创建一个有多个用户的类(可能是50+但是现在,我的示例中只有2个)。我想做的是有一些关于用户/员工的信息,并且能够一次性打印出来。。。在某种程度上,这不是一个完全的眼睛!这就是我所尝试的:

class User:

    def __init__(self, user_id, first, last, address):
        self.user_id = user_id
        self.first = first
        self.last = last
        self.address = address
        self.email = first + '.' + last + '@python.com'

    def all_users(self):
        print()
        print('User ID: {} First Name: {} {} {} {}'.format(self.user_id, self.first, self.last, self.address, self.email))
        print()


user_1 = User(123, 'Kim', 'N', 'London')

user_2 = User(312, 'Chris', 'E', 'Japan')

print(all_users(User))

这是我收到的错误消息:

print('User ID: {} First Name: {} {} {} {}'.format(self.user_id, self.first, self.last, self.address, self.email))
AttributeError: type object 'User' has no attribute 'user_id'

提前感谢您的帮助和指导。你知道吗


Tags: 用户selfidaddressemaildefallusers
2条回答

听起来像是希望User类包含所有用户的列表。你知道吗

这称为类变量,因为它附加到类本身,而不是附加到类的特定实例。你知道吗

示例代码:

class User(object):

    users = []

    def __init__(self, first, last):
        self.first = first
        self.last = last

        # now that this instance is fully initialized, add it
        # to the master list of users
        User.users.append(self)

    def __str__(self):
        return '{} {}'.format(self.first, self.last)

    @staticmethod
    def all_users():
        for user in User.users:
            print (user)

user_1 = User('Kim', 'Smith')
user_2 = User('Chris', 'Jones')

User.all_users()

您可能应该实现^{} or ^{} special methods,它分别用于打印类实例的可读表示和“官方”表示

class User():
    ...

    def __str__(self):
        attrs = ['{}={}'.format(k, repr(v)) for k, v in self.__dict__.items()]
        return '{}({})'.format(self.__class__.__name__, ', '.join(attrs))

那就这样了

>>> user = User('123', 'John', 'Doe', 'USA')
>>> print(user)
User(user_id='123', first='John', last='Doe', address='USA', email='John.Doe@python.com')

相关问题 更多 >