클래스에 대한 일반적인 get 메서드를 작성하는 방법은 무엇입니까?

파프리카

최근에 파이썬에서 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

json 문자열에 대한 일반 getObject () 메서드를 작성하는 방법은 무엇입니까?

분류에서Dev

인터페이스 메서드에서 반환 된 값에 대해 동일한 유형의 클래스를 지정하는 방법은 무엇입니까?

분류에서Dev

인터페이스 메서드에서 반환 된 값에 대해 동일한 유형의 클래스를 지정하는 방법은 무엇입니까?

분류에서Dev

스칼라에서 모든 숫자 (Ordering [_])에 대해 일반적인 메서드를 작성하는 방법은 무엇입니까?

분류에서Dev

Scala의 컬렉션에 대한 일반 암시 적 클래스를 만드는 방법은 무엇입니까?

분류에서Dev

.net의 다른 어셈블리에서 개인 정적 형식 (또는 클래스)에 대한 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

내부 클래스 내부에있는 메서드에 대한 테스트 메서드를 작성하는 방법은 무엇입니까?

분류에서Dev

프록시 클래스에 대한 메서드를 동적으로 생성하는 방법은 무엇입니까?

분류에서Dev

하위 도메인에 대한 DNS 레코드를 작성하는 방법은 무엇입니까?

분류에서Dev

TypeScript에서 클래스에 대한 인터페이스를 정의하는 방법은 무엇입니까?

분류에서Dev

동일한 방법,하지만 같은 인터페이스를 구현하지와 클래스의 그룹에 대한 공통 코드를 작성하는 관용적 인 방법은 무엇입니까?

분류에서Dev

JavaScript에서 onclick 클래스의 새 인스턴스를 만드는 적절한 방법은 무엇입니까?

분류에서Dev

django에서 뷰에 대한 get 및 post 테스트 메서드를 작성하는 방법은 무엇입니까?

분류에서Dev

기본 클래스에서 파생 클래스 필드를 일반적으로 초기화하는 강력한 방법은 무엇입니까?

분류에서Dev

클래스가 해당 멤버를 반복적으로 평가하기 위해 메서드에서 사용할 클래스 멤버에 대한 인수로 함수를 전달하는 방법은 무엇입니까?

분류에서Dev

urllib로 get 메소드에 대한 인수를 전달하는 방법은 무엇입니까?

분류에서Dev

동일한 입력에 대해 다른 유형을 반환 할 수있는 확장 메서드를 작성하는 방법은 무엇입니까?

분류에서Dev

Swift에서 이것에 대한 클래스 정의를 작성하는 방법은 무엇입니까?

분류에서Dev

클래스 인수 및 메서드 인수에 대한 액세스 권한을 잃지 않고 클래스의 메서드 내부에서 이벤트 리스너 내에서 "this"키워드를 사용하는 방법은 무엇입니까?

분류에서Dev

'클래스 확장'에 대한 의미있는 테스트를 작성하는 방법은 무엇입니까?

분류에서Dev

리소스에 대한 인터셉터를 작성하는 적절한 방법은 무엇입니까?

분류에서Dev

클래스 인스턴스에 대한 포인터를 역 참조하는 방법은 무엇입니까?

분류에서Dev

재귀 하강 파서의 일부에 대한 코드를 작성하는 방법은 무엇입니까?

분류에서Dev

추상 기반에서 파생 된 클래스에서 동일한 메서드를 구현하는 방법은 무엇입니까?

분류에서Dev

Laravel 5 내 검색어가 INDEX에 대한 GET 인 경우 INDEX에 대한 GET 경로를 작성하는 방법은 무엇입니까?

분류에서Dev

non-blocking connect ()에 대한 코드를 작성하는 이상적인 방법은 무엇입니까?

분류에서Dev

C #의 다른 메서드에서 동일한 클래스의 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

여러 클래스에 대한 클래스 메서드를 병렬로 실행할 때 클래스 상태를 유지하는 방법은 무엇입니까?

분류에서Dev

테스트중인 동일한 클래스에서 다른 메서드를 조롱하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    json 문자열에 대한 일반 getObject () 메서드를 작성하는 방법은 무엇입니까?

  2. 2

    인터페이스 메서드에서 반환 된 값에 대해 동일한 유형의 클래스를 지정하는 방법은 무엇입니까?

  3. 3

    인터페이스 메서드에서 반환 된 값에 대해 동일한 유형의 클래스를 지정하는 방법은 무엇입니까?

  4. 4

    스칼라에서 모든 숫자 (Ordering [_])에 대해 일반적인 메서드를 작성하는 방법은 무엇입니까?

  5. 5

    Scala의 컬렉션에 대한 일반 암시 적 클래스를 만드는 방법은 무엇입니까?

  6. 6

    .net의 다른 어셈블리에서 개인 정적 형식 (또는 클래스)에 대한 메서드를 호출하는 방법은 무엇입니까?

  7. 7

    내부 클래스 내부에있는 메서드에 대한 테스트 메서드를 작성하는 방법은 무엇입니까?

  8. 8

    프록시 클래스에 대한 메서드를 동적으로 생성하는 방법은 무엇입니까?

  9. 9

    하위 도메인에 대한 DNS 레코드를 작성하는 방법은 무엇입니까?

  10. 10

    TypeScript에서 클래스에 대한 인터페이스를 정의하는 방법은 무엇입니까?

  11. 11

    동일한 방법,하지만 같은 인터페이스를 구현하지와 클래스의 그룹에 대한 공통 코드를 작성하는 관용적 인 방법은 무엇입니까?

  12. 12

    JavaScript에서 onclick 클래스의 새 인스턴스를 만드는 적절한 방법은 무엇입니까?

  13. 13

    django에서 뷰에 대한 get 및 post 테스트 메서드를 작성하는 방법은 무엇입니까?

  14. 14

    기본 클래스에서 파생 클래스 필드를 일반적으로 초기화하는 강력한 방법은 무엇입니까?

  15. 15

    클래스가 해당 멤버를 반복적으로 평가하기 위해 메서드에서 사용할 클래스 멤버에 대한 인수로 함수를 전달하는 방법은 무엇입니까?

  16. 16

    urllib로 get 메소드에 대한 인수를 전달하는 방법은 무엇입니까?

  17. 17

    동일한 입력에 대해 다른 유형을 반환 할 수있는 확장 메서드를 작성하는 방법은 무엇입니까?

  18. 18

    Swift에서 이것에 대한 클래스 정의를 작성하는 방법은 무엇입니까?

  19. 19

    클래스 인수 및 메서드 인수에 대한 액세스 권한을 잃지 않고 클래스의 메서드 내부에서 이벤트 리스너 내에서 "this"키워드를 사용하는 방법은 무엇입니까?

  20. 20

    '클래스 확장'에 대한 의미있는 테스트를 작성하는 방법은 무엇입니까?

  21. 21

    리소스에 대한 인터셉터를 작성하는 적절한 방법은 무엇입니까?

  22. 22

    클래스 인스턴스에 대한 포인터를 역 참조하는 방법은 무엇입니까?

  23. 23

    재귀 하강 파서의 일부에 대한 코드를 작성하는 방법은 무엇입니까?

  24. 24

    추상 기반에서 파생 된 클래스에서 동일한 메서드를 구현하는 방법은 무엇입니까?

  25. 25

    Laravel 5 내 검색어가 INDEX에 대한 GET 인 경우 INDEX에 대한 GET 경로를 작성하는 방법은 무엇입니까?

  26. 26

    non-blocking connect ()에 대한 코드를 작성하는 이상적인 방법은 무엇입니까?

  27. 27

    C #의 다른 메서드에서 동일한 클래스의 메서드를 호출하는 방법은 무엇입니까?

  28. 28

    여러 클래스에 대한 클래스 메서드를 병렬로 실행할 때 클래스 상태를 유지하는 방법은 무엇입니까?

  29. 29

    테스트중인 동일한 클래스에서 다른 메서드를 조롱하는 방법은 무엇입니까?

뜨겁다태그

보관