본문 바로가기
파이썬

파이썬 클래스에서 상수를 정의하는 것은 정말로 필요합니까?

by º기록 2020. 10. 29.
반응형

다음과 같은 클래스에서 상수 집합을 정의하고 싶습니다.

class Foo(object):
   (NONEXISTING,VAGUE,CONFIRMED) = (0,1,2)
   def __init__(self):
       self.status = VAGUE

그러나 나는

NameError: global name 'VAGUE' is not defined

global 또는 self.NONEXISTENT = 0 등에 의존하지 않고 이러한 상수를 클래스 내부에서 볼 수 있도록 정의하는 방법이 있습니까?

 

해결 방법

 

클래스 본문의 이름에 할당하면 클래스의 속성이 생성됩니다. 클래스를 직접 또는 간접적으로 참조하지 않고서는 참조 할 수 없습니다. 다른 답변처럼 Foo.VAGUE 를 사용하거나 self.VAGUE 를 사용할 수 있습니다. self 의 속성에 할당 할 필요가 없습니다.

일반적으로 self.VAGUE 를 사용하면 하위 클래스가 속성을 사용하는 모든 메서드를 다시 구현할 필요없이 속성을 재정의 할 수 있기 때문에 원하는 것입니다. 예,하지만 누가 압니다.

 

참조 페이지 https://stackoverflow.com/questions/3995546

 

 

반응형

댓글