Python 打印类
嗨,我正在尝试使用一个类打印4个乐队成员的详细信息,但是我只能打印一个,我将在下面给出示例让您理解,这是我的全部代码Python 打印类,python,class,output,Python,Class,Output,嗨,我正在尝试使用一个类打印4个乐队成员的详细信息,但是我只能打印一个,我将在下面给出示例让您理解,这是我的全部代码 class Person: def __init__(self, _firstname, _surname, d, m, y): self._firstname = _firstname self._surname = _surname self.d = d self.m = m self.y
class Person:
def __init__(self, _firstname, _surname, d, m, y):
self._firstname = _firstname
self._surname = _surname
self.d = d
self.m = m
self.y = y
def __repr__(self):
return '{} {} \n{} {} {}'.format(john._firstname, john._surname, john.d, john.m, john.y)
return '{} {} \n{} {} {}'.format(paul._firstname, paul._surname, paul.d, paul.m, paul.y)
return '{} {} \n{} {} {}'.format(george._firstname, george._surname, george.d, george.m, george.y)
return '{} {} \n{} {} {}'.format(ringo._firstname, ringo._surname, ringo.d, ringo.m, ringo.y)
john = Person('John','Lennon','8th','October','1940')
paul = Person('Paul','McCartney','18th','June','1942')
george = Person('George','Harrison','25th','February','1943')
ringo = Person('Ringo','Starr','7th','July','1940')
john._firstname = 'John'
john._surname = 'Lennon'
john.d = '8th'
john.m = 'October'
john.y = '1940'
paul._firstname = 'Paul'
paul._surname = 'McCartney'
paul._d = '18th'
paul._m = 'June'
paul._y = '1942'
george._firstname = 'George'
george._surname = 'Harrison'
george._d = '25th'
george._m = 'February'
george._y = '1943'
ringo._firstname = 'Ringo'
ringo._surname = 'Starr'
ringo._d = '7th'
ringo._m = 'July'
ringo._y = '1940'
print('{} {} \n{} {} {}'.format(john._firstname, john._surname, john.d, john.m, john.y))
print('{} {} \n{} {} {}'.format(paul._firstname, paul._surname, paul.d, paul.m, paul.y))
print('{} {} \n{} {} {}'.format(george._firstname, george._surname, george.d, george.m, george.y))
print('{} {} \n{} {} {}'.format(ringo._firstname, ringo._surname, ringo.d, ringo.m, ringo.y))
我收到正确的输出,即:
John Lennon
8th October 1940
Paul McCartney
18th June 1942
George Harrison
25th February 1943
Ringo Starr
7th July 1940
我希望能够键入:
print(john)
print(george)
print(paul)
print(ringo)
但是,为了获得相同的输出,当我键入此内容并删除底部的4行打印行时,我得到了以下结果
John Lennon
8th October 1940
John Lennon
8th October 1940
John Lennon
8th October 1940
John Lennon
8th October 1940
到目前为止,我的理解是,\uuu repr\uuuu(self)
只能读取一行代码,那就是john
,但我的知识就到此为止了
非常感谢您的帮助!如果您需要更多信息,请询问,我对这一点很陌生,因为我在大学的第一年,所以我感谢您的耐心和帮助!:) 任何
return
命令都将简单地退出函数,因此在同一级别上有多个return
命令在Python中永远不会起作用
代码的问题在于,您应该在\uuuu repr\uuuu
定义中使用关键字self
,这样您就可以通过创建的所有四个实例访问它
john = Person('John','Lennon','8th','October','1940')
paul = Person('Paul','McCartney','18th','June','1942')
george = Person('George','Harrison','25th','February','1943')
ringo = Person('Ringo','Starr','7th','July','1940')
类Person
实例的创建也将自动存储您输入的所有信息,因此无需手动为john.\u firstname
等指定值
给出明确的答案:
class Person:
def __init__(self, _firstname, _surname, d, m, y):
self._firstname = _firstname
self._surname = _surname
self.d = d
self.m = m
self.y = y
def __repr__(self):
return '{} {} \n{} {} {}'.format(self._firstname,
self._surname,
self.d,
self.m,
self..y)
john = Person('John','Lennon','8th','October','1940')
paul = Person('Paul','McCartney','18th','June','1942')
george = Person('George','Harrison','25th','February','1943')
ringo = Person('Ringo','Starr','7th','July','1940')
print(john)
print(paul)
print(george)
print(ringo)
您的
\uuu repr\uuu
讨论了类实例,如john
。它的编写需要满足Person
的任何实例
def __repr__(self):
return '{} {} \n{} {} {}'.format(self._firstname, self._surname, self.d, self.m, self.y)
在函数中留下一个
return
-语句。忽略以下行。
在方法中,当访问属性时,您仅为对象本身使用占位符。使用self
而不是对象的真实名称
def __repr__(self):
return '{} {} \n{} {} {}'.format(
self._firstname, self._surname, self.d, self.m, self.y)
您的
\uuuu repr\uuuu
函数有点奇怪。例如,使用self
而不是john
,并且只返回一个字符串。大多数代码是不必要的;创建对象时传递参数的目的是,这样以后就不需要编写类似于john的东西<代码>\uuuu init\uuuuu
已经被调用并为您完成了这项工作。此外,您确实应该定义\uuuuuu str\uuuuuuu
,而不是\uuu repr\uuuuu
。这两种方法都返回对象的字符串表示形式,但有不同的用例。在Python中,名称以下划线开头的成员被视为私有成员(它不在帮助中列出)。因此,您应避免直接访问/设置这些。如果您想这样做,那么这些成员不应该是私有的。