[PYTHON] 파이썬에서 함수가 오버라이드되는 것을 막는 법
PYTHON파이썬에서 함수가 오버라이드되는 것을 막는 법
클래스 함수를 재정의 할 수있는 방법이 있습니까? 자바 최종 키워드와 같은 것. i.n, 우선하는 클래스는 그 메소드를 오버라이드 (override) 할 수 없습니다.
해결법
-
==============================
1.문제는 Java 철학을 사용하여 Python으로 작성하려고하는 것입니다. 어떤 것은 이월되지만 전부는 아닙니다. 파이썬에서는 다음을 할 수 있으며 완벽하게 훌륭하지만 자바가 객체를 어떻게 생각하는지에 대해서는 완전히 반대합니다.
문제는 Java 철학을 사용하여 Python으로 작성하려고하는 것입니다. 어떤 것은 이월되지만 전부는 아닙니다. 파이썬에서는 다음을 할 수 있으며 완벽하게 훌륭하지만 자바가 객체를 어떻게 생각하는지에 대해서는 완전히 반대합니다.
class Thing(object): x = 1 something = Thing() something.y = something.x
정말로 원한다면 여기에 게시 된 코드를 사용해보십시오. 그러나 당신이 볼 수 있듯이, 당신이 원하는 것을하기 위해 많은 코드가 있습니다. 코드를 게시 한 사람조차도 __dict__ 또는 object .__ setattr__을 사용하여 전달할 수 있다고 말합니다.
-
==============================
2.거기에 코멘트를 넣어서 다음과 같은 효과를 낼 수 있습니다.
거기에 코멘트를 넣어서 다음과 같은 효과를 낼 수 있습니다.
# We'll fire you if you override this method.
이 기술이 어떻게 실제로 잘 작동하는지는 놀랍습니다.
-
==============================
3.예, 있습니다.하지 마십시오.
예, 있습니다.하지 마십시오.
나는 아래 투표 후에 이것을 덧붙여 야합니다. 이러한 보호 메커니즘은 일부 사람들이 파이썬의 정신에 반하는 것으로 간주됩니다. "우리는 모두 여기에 성인을 동의하고 있습니다."당신은 그러한 기능을 보호하고 싶습니까? 그리고 코멘트가 충분하지 않은 경우 왜 '강한'것이 있습니까?
나는 당신의 기대를 문서화하고 다른 프로그래머들이 책임있게 행동 할 것을 기대한다.
-
==============================
4.클래스의 메서드 앞에 이중 밑줄을 사용하는 것은 명명 규칙이 아닙니다. 이렇게하면 메소드 이름은 classname (_classname__methodname ())으로 변경됩니다.
클래스의 메서드 앞에 이중 밑줄을 사용하는 것은 명명 규칙이 아닙니다. 이렇게하면 메소드 이름은 classname (_classname__methodname ())으로 변경됩니다.
그 앞에 두 개의 밑줄이있는 메소드로 클래스를 상속함으로써 하위 클래스의 경우 위에 지정된 메소드를 재정의하는 것이 어려워집니다. 이 방법은 java의 final과 거의 같습니다.
from https://stackoverflow.com/questions/2425656/how-to-prevent-a-function-from-being-overridden-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 "#ifdef"를 어떻게 구현합니까? (0) | 2018.11.06 |
---|---|
[PYTHON] 업데이트를 수행 할 때 명시 적으로 커밋해야하는 이유는 무엇입니까? (0) | 2018.11.06 |
[PYTHON] Python - 데이터 프레임에 행을 추가하는 효율적인 방법 (0) | 2018.11.06 |
[PYTHON] datetime을 하루 만에 늘리는 방법은 무엇입니까? (0) | 2018.11.06 |
[PYTHON] PIL에서 사용하도록 POST에서 base64 디코딩 (0) | 2018.11.06 |