[英]Printing classes in Python with multiple values
我在该网站上进行搜索时花了很多时间,希望我以前没有问过这个问题-很抱歉。 我是第一次学习课程,并且正在与多个用户一起上课(可能是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'
在此先感谢您的帮助或指导。
您可能应该实现__str__
或__repr__
特殊方法 ,这些方法分别用于打印人类可读的类实例的“官方”表示形式
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')
听起来您希望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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.