사람들은 getter 및 setter를 Pythonic으로 생각하지 않고 대신 @property
을 사용하는 경향이 있습니다. 나는이 처리하는 헬퍼 클래스를 만들 수 있습니다, 물론dict-style setter에 대한 Pythonic 대안?
class OldMyClass(object):
@property
def foo(self):
return self._foo
@foo.setter
def foo(self, value):
self.side_effect(value)
self._foo = value
class NewMyClass(object):
@property
def foo(self, key): # Invalid Python
return self._foo[key]
@foo.setter
def foo(self, key, value): # Invalid Python
self.side_effect(key, value)
self._foo[key] = value
하지만, 그것은 단지 세터/게터를 작성하는 것 같아 : 저는 현재 딕셔너리를 지원하기 위해 @property
를 사용하는 클래스의 기능을 확장하기 위해 노력하고있어 키와 값을 취하는 함수는 훨씬 간단합니다. 하지만이 리팩터링을하기위한 더 파이썬 적 방법이 있습니까?
나는 당신의 질문을 이해하지 못합니다. 'foo.setter' 란 무엇입니까? 일반적으로 이전에'foo'라는 게터를 정의한 경우에만 작동합니다. 또한 결과 객체를 어떻게 사용하려고합니까? '열쇠'는 어떻게 사용되어야 하는가? – BrenBarn
그래, 나는 그것이 정말로 적절하다고 생각하지 않았기 때문에 getter를 포함하지 않았다. 나는 그것을 명료하게 추가 할 것이다. 어떻게 결과 객체를 사용하려고하는지에 대한 질문을 이해할 수 없습니다. –
키/값을 설정하는 데 사용할 코드는 무엇입니까? 보통의 프로퍼티를 사용하면'obj.prop = value'를 할 것입니다. 대신에 무엇을하고 싶니? – BrenBarn