최근에 파이썬에서 oop을 사용하기 시작했습니다. 시작된 속성에 대한 일반적인 get 또는 set 메서드를 작성하고 싶습니다. 예를 들어, 여러 속성과 해당 get 메소드가있는 Song 클래스가 있습니다. 여러 if 문을 피하고 싶습니다. 두 개의 속성만으로는 문제가되지 않지만 5 개 이상의 속성이있는 경우 코드를 읽기가 어렵습니다. 가능한 모든 경우를 정의하는 동안 init 에서 값을 가져 오기 위해 args에 문자열을 사용할 수 있습니까?
class Song(object):
def __init__(self,title,prod):
self.title = title
self.prod = prod
def getParam(self,*args):
retPar = dict()
if 'title' in args:
print(self.title)
retPar['title'] = self.title
if 'prod' in args:
print(self.prod)
retPar['prod'] = self.prod
return(retPar)
나는 아무것도 찾을 수 없기 때문에 이것이 가능한지 확실하지 않습니다. 어떻게 할 수 있습니까?
파이썬 구문에 익숙하지 않은 동료를위한 기능을 제공하여 attritube에 직접 액세스 할 필요가 없습니다. 플로팅 등을 위해
파이썬은 반드시 가르쳐지는 것은 아니며 matlab에 대한 기본 지식이있는 사람들에게는 도트 구문이 혼란스러워서
나는 이것이 쉽게 가르 칠 수 있고 당신은 너무 단순한 것을 위해 뒤로 구부려서는 안된다고 주장하고 싶다… 그러나 이것이 정말로 당신이 원하는 것이라고 가정하면, 이것은 훨씬 더 나은 생각처럼 보인다 :
class Song(object):
def __init__(self, title, prod):
self.title = title
self.prod = prod
def __getitem__(self, key):
return getattr(self, key)
song = Song('Foo', 'Bar')
print song['title']
참조 https://docs.python.org/2/reference/datamodel.html#object.__getitem__ 및 https://docs.python.org/2/library/functions.html#getattr .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다