정적 메서드-다른 메서드에서 메서드를 호출하는 방법은 무엇입니까?
클래스에서 다른 메서드를 호출하는 일반 메서드가있는 경우이 작업을 수행해야합니다.
class test:
def __init__(self):
pass
def dosomething(self):
print "do something"
self.dosomethingelse()
def dosomethingelse(self):
print "do something else"
하지만 정적 메서드가 있으면 쓸 수 없습니다.
self.dosomethingelse()
인스턴스가 없기 때문입니다. 같은 클래스의 다른 정적 메서드에서 정적 메서드를 호출하려면 Python에서 어떻게해야합니까?
편집 : 엉망입니다. 네, 질문을 원래 질문으로 다시 수정했습니다. 나는 이미 Peter Hansen의 코멘트에있는 두 번째 질문에 대한 답을 가지고 있습니다. 내가 이미 가지고있는 답변에 대해 다른 질문을 열어야한다고 생각한다면 plz 말해주세요.
class.method
작동해야합니다.
class SomeClass:
@classmethod
def some_class_method(cls):
pass
@staticmethod
def some_static_method():
pass
SomeClass.some_class_method()
SomeClass.some_static_method()
같은 클래스의 다른 정적 메서드에서 정적 메서드를 호출하려면 Python에서 어떻게해야합니까?
class Test() :
@staticmethod
def static_method_to_call()
pass
@staticmethod
def another_static_method() :
Test.static_method_to_call()
@classmethod
def another_class_method(cls) :
cls.static_method_to_call()
참고-질문이 일부 변경된 것 같습니다. 정적 메서드에서 인스턴스 메서드를 호출하는 방법에 대한 대답은 인스턴스를 인수로 전달하거나 해당 인스턴스를 정적 메서드 내에서 인스턴스화하지 않고서는 할 수 없다는 것입니다.
다음은 대부분 "다른 정적 메서드에서 정적 메서드를 호출하는 방법"에 대한 답변입니다.
마음에 곰이 있다는 것입니다 파이썬에서 정적 메소드와 클래스 메소드의 차이. 정적 메서드는 암시 적 첫 번째 인수를 사용하지 않는 반면 클래스 메서드는 클래스를 암시 적 첫 번째 인수로 사용합니다 (일반적 cls
으로 규칙에 따라). 이를 염두에두고이를 수행하는 방법은 다음과 같습니다.
정적 메서드 인 경우 :
test.dosomethingelse()
클래스 메서드 인 경우 :
cls.dosomethingelse()
좋습니다. 클래스 메서드와 정적 메서드의 주요 차이점은 다음과 같습니다.
- class method has its own identity, that's why they have to be called from within an INSTANCE.
- on the other hand static method can be shared between multiple instances so that it must be called from within THE CLASS
you cant call non-static methods from static methods but by creating an instance inside the static method.... it should work like that
class test2(object):
def __init__(self):
pass
@staticmethod
def dosomething():
print "do something"
#creating an instance to be able to call dosomethingelse(),or you may use any existing instace
a=test2()
a.dosomethingelse()
def dosomethingelse(self):
print "do something else"
test2.dosomething()
hope that will help you :)
If these don't depend on the class or instance then why not just make them a function? As this would seem like the obvious solution. Unless of course you think it's going to need to be overwritten, subclass etc. If so then the previous answers are the best bet. Fingers crossed I wont get marked down for merely offering an alternative solution that may or may not fit someones needs ;).
As the correct answer will depend on the use case of the code in question ;) Enjoy
참고URL : https://stackoverflow.com/questions/1859959/static-methods-how-to-call-a-method-from-another-method
'developer tip' 카테고리의 다른 글
GWT 대신 jQuery를 사용해야하는 이유는 무엇입니까? (0) | 2020.10.18 |
---|---|
SSH 연결을 확인하기 위해 bash 스크립트를 만드는 방법은 무엇입니까? (0) | 2020.10.18 |
CSS : 순수 CSS 스크롤 애니메이션 (0) | 2020.10.18 |
dict python에 대한 URL 쿼리 매개 변수 (0) | 2020.10.18 |
rails server bin / rails : 6 : 경고 : 이미 초기화 된 상수 APP_PATH 오류 (0) | 2020.10.18 |