1
아래의 2 클래스 중 Guitarist_1과 Guitarist_2는 객체 표현 함수의 문자열 형식이 가장 파이썬 적이므로; 받아 들였습니까? Guitarist_1을 선호하기 때문에 목록에 추가 할 필요가 없습니다. 특정 방식으로 특성을 정렬하십시오.파이썬 문자열 형식 args 대 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의 경우 당신이 부를 수있는 'format'과 압축 해제 목록 (Guitarist_1과 거의 같음) . 형식 문자열은 물건을 주문하는 것입니다. – kren470
이 질문은 http://codereview.stackexchange.com/ – SethMMorton
에서 더 나은 집을 찾을 수 있습니다. FYI :'className'은'return self .__ class __.__ name__'으로 단순화 될 수 있습니다. (또한 파생 클래스의'__init__'는 슈퍼 클래스의'__init__'에 인수를 전달할 때 불필요합니다.) – jwodder