@classmethod
을 사용하고 싶지만 인스턴스의 네임 스페이스를 오염시키고 싶지 않습니다. 클래스 메서드 for_classes_only
이있는 경우 인스턴스를 가져 오지 못하게하려면 어떻게해야합니까?인스턴스가 파이썬을보고 싶지 않음 @classmethod
class MyThing(object):
def __init__(self, this=None):
self.this = this
@classmethod
def for_classes_only(cls):
print "I have a class {}".format(cls)
thing = MyThing(this='that')
이 중대하다 :
>>> MyThing.for_classes_only()
I have a class <class '__main__.MyThing'>
이 성가신 :
>>> thing.for_classes_only
<bound method type.for_classes_only of <class '__main__.MyThing'>>
* 클래스의 모든 항목 *은 인스턴스에서 액세스 할 수 있습니다. * live *에는 존재하지 않습니다. 파이썬은 속성이 인스턴스 자체에 존재하지 않을 때 클래스를 봅니다. 인스턴스가 인스턴스를 볼 수 없도록하려면 * 클래스 외부의 함수 *를 사용하십시오. 클래스에 명시 적으로 전달해야하므로 바인딩되지 않습니다. –
그래서 "class method"는 메소드가 클래스를받는 것을 의미하며, 메소드가 클래스에 제한되지는 않습니다. 알았다. – jkmacc
클래스를 숨길 수는 없지만 클래스가 인스턴스화되었는지 여부에 따라 동작이 변경 될 수 있습니다 (예 : '__init__'에 플래그를 설정합니다. – 101