복붙노트

[PYTHON] 파이썬 : 객체 속성 참조 메소드 호출 방법

PYTHON

파이썬 : 객체 속성 참조 메소드 호출 방법

어떤 메소드의 결과를 반환하기 위해 object.x와 같은 애트리뷰트 호출을하고 싶습니다. 예를 들어 object.other.other_method (). 어떻게해야합니까?

편집 : 나는 조금 빨리 물었다 : 나는 이것을 할 수있는 것처럼 보인다.

object.__dict__['x']=object.other.other_method()

이렇게하는 것이 좋은 방법일까요?

해결법

  1. ==============================

    1.속성 데코레이터 사용

    속성 데코레이터 사용

    class Test(object): # make sure you inherit from object
        @property
        def x(self):
            return 4
    
    p = Test()
    p.x # returns 4
    

    특히 @property를 사용할 수있는 경우 __dict__를 사용하면 더럽습니다.

  2. ==============================

    2.내장 된 속성 함수를 살펴보십시오.

    내장 된 속성 함수를 살펴보십시오.

  3. ==============================

    3.재산을 사용하십시오.

    재산을 사용하십시오.

    http://docs.python.org/library/functions.html#property

    class MyClass(object):
        def __init__(self, x):
            self._x = x
    
        def get_x(self):
            print "in get_x: do something here"
            return self._x
    
        def set_x(self, x):
            print "in set_x: do something"
            self._x = x
    
        x = property(get_x, set_x)
    
    if __name__ == '__main__':
        m = MyClass(10)
        # getting x
        print 'm.x is %s' % m.x
        # setting x
        m.x = 5
        # getting new x
        print 'm.x is %s' % m.x
    
  4. ==============================

    4.other_method가 생성 될 때 한 번만 호출합니다.

    other_method가 생성 될 때 한 번만 호출합니다.

    object.__dict__['x']=object.other.other_method()
    

    대신 당신은 이것을 할 수 있습니다.

    object.x = property(object.other.other_method)
    

    object.x가 액세스 될 때마다 다른 메소드를 호출합니다.

    물론 변수 이름으로 객체를 사용하지 않는 것입니까?

  5. from https://stackoverflow.com/questions/3166773/python-how-to-make-object-attribute-refer-call-a-method by cc-by-sa and MIT license