2011-04-01 3 views
2

속성 이름을 통해 정적 속성을 얻기 : 이제파이썬 : 나는 메타 클래스를 통해 "에뮬레이션"정적 속성과 파이썬 클래스가

class MyMeta(type): 
    @property 
    def x(self): return 'abc' 

    @property 
    def y(self): return 'xyz' 


class My: __metaclass__ = MyMeta 

내 일부 기능은해야 문자열로 속성 이름을 수신 내.

def property_value(name): 
    return My.???how to call property specified in name??? 

여기에서 요점은 내가 만든 인스턴스를 만들고 싶지 않다는 것입니다.

많은 감사,

Ovanes

답변

3

당신은 내가 최근에보고 있었다

getattr(My,name) 
+0

감사합니다. 시도해 본 결과 예외가 발생했습니다. 그러나 나는 그것을 다시 시도하고 그것이 작동합니다 .... 고마워! – ovanes

0

사용할 수 있습니다. Test.Fu을 쓸 수 있기를 원했습니다. 여기서 Fu은 계산 된 속성입니다. 기술자 객체를 사용

다음 작품 : 뒤에서 할당 Test의 인스턴스가 있음을

class DeclareStaticProperty(object): 
    def __init__(self, method): 
     self.method = method 
    def __get__(self, instance, owner): 
     return self.method(owner()) 

class Test(object): 
    def GetFu(self): 
     return 42 
    Fu = DeclareStaticProperty(GetFu) 

print Test.Fu # outputs 42 

참고.