1
在下面的兩個類中,Guitarist_1和Guitarist_2,它們的對象表示函數的字符串格式最爲pythonic;公認?我更喜歡Guitarist_1,因爲我不必列出;以任何特定的方式排序屬性。Python字符串格式args vs kwargs
[Guitarist_1] Hendrix, Jimi (11/27/1942)
[Guitarist_2] Hendrix, Jimi (11/27/1942)
Guitarist.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')
在Guitarist_2的情況下,你可以調用'格式'與解壓縮列表(這使得它與Guitarist_1大致相同) 。格式字符串是用於排序的東西,然後。 – kren470
這個問題可能會在http://codereview.stackexchange.com/ – SethMMorton
上找到一個更好的主頁。FYI:'className'可以簡化爲'return self____ class __.__ name__'。 (而且,如果派生類中的'__init__'只是將它們的參數傳遞給超類的'__init__',則它們是不必要的。) – jwodder