在下面的 2 个类中,Guitarist_1 和 Guitarist_2,其中一个对象表示函数的字符串格式是最 Pythonic 的;公认?我更喜欢 Guitarist_1,因为我不必一一列举;以任何特定方式对属性进行排序。
[Guitarist_1] Hendrix, Jimi (11/27/1942)
[Guitarist_2] Hendrix, Jimi (11/27/1942)
吉他手.py
import re
class Guitarist(object):
CLASS_NAME_RE = r'([A-Z][\w\d_]+)\'>$'
def __init__(self, fname, lname, dob):
self.fname, self.lname, self.dob = fname, lname, dob
def className(self):
return re.search(self.CLASS_NAME_RE, str(type(self))).group(1)
def __repr__(self):
return '[{}]'.format(self.className())
class Guitarist_1(Guitarist):
def __init__(self, fname, lname, dob):
Guitarist.__init__(self, fname, lname, dob)
def __repr__(self):
return Guitarist.__repr__(self) + ' {lname}, {fname} ({dob})'\
.format(**self.__dict__)
class Guitarist_2(Guitarist):
def __init__(self, fname, lname, dob):
Guitarist.__init__(self, fname, lname, dob)
def __repr__(self):
return Guitarist.__repr__(self) + ' {}, {} ({})'\
.format(self.lname, self.fname, self.dob)
print Guitarist_1('Jimi', 'Hendrix', '11/27/1942')
print Guitarist_2('Jimi', 'Hendrix', '11/27/1942')