어떻게 표현해야할지 모르겠지만 여기에 거래가 있습니다. 모든 변수가 전역 적으로 정의 된 스크립트가 있지만 나중에 더 나은 캡슐화를 위해 스크립트를 클래스로 변환하고 싶습니다.
그러나 스크립트에서 사용한 모든 변수는 개체 변수로 변환해야합니다. 나는 다음과 같이 변경했을 것입니다.
x = 5
으로
self.x = 5
그런 다음 스크립트의 모든 함수를 클래스의 메서드로 전환해야합니다. 그러나 대부분의 메서드는 수학 공식이며 다음과 같이 깨끗한 것을 리팩토링합니다.
z = x ** y + x
으로
z = self.x ** self.y + self.x
정말 가독성을 떨어 뜨립니다.
그래서 이것에 대한 해결책으로 나는 메소드의 시작 부분에 정말 어색한 이름 변경을 입력했습니다.
def method(self, ...):
x = self.x
y = self.y
...
수식을 읽기 쉽게 만들지 만 이름을 바꾸는 것은 정말 고통 스럽습니다. 더 우아한 방법이 있습니까?
self
제안 된 이름입니다. 나는 그것을 사용하는 것이 좋지만 어떤 경우에는 그것을 줄이는 것이 낫습니다.
class A:
x = None
y = None
def calculate_z(s):
return s.x ** s.y + s.x
foo = A()
foo.x = 4
foo.y = 2
foo.calculate_z() # 20
재미있는 사실 : ® (Python 3에서)과 같은 유니 코드 문자를 사용할 수도 있습니다.
def calculate_z(®):
return ®.x ** ®.y + ®.x
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다