예를 들면
내 수업이 있고 MyClass
나는 그것을 인스턴스화 할 수 있기를 원 MyClass((1, 2))
하지만 MyClass(1, 2)
동일한 결과를 가져야합니다. MyClass[1, 2]
어떤 식 으로든 작성하여 인스턴스화하는 것도 가능 합니까?
def __init__(arg1, arg2=None):
if arg2 is None:
construct_one_way()
else:
do_something_different()
기술적 MyClass[1, 2]
으로는 사용자 지정 메타 클래스로 작업 할 수 있지만 코드를 읽는 사람은 누구나 싫어할 것입니다. 대괄호는 요소 액세스를위한 것입니다.
관리 할 수없는 코드를 가진 그 사람이되고 싶다면 메타 클래스 옵션이 있습니다.
class DontDoThis(type):
def __getitem__(self, arg):
return self(arg)
class SeriouslyDont(object):
__metaclass__ = DontDoThis
def __init__(self, arg1, arg2=None):
if arg2 is None:
arg1, arg2 = arg1
self.arg1 = arg1
self.arg2 = arg2
데모:
>>> SeriouslyDont[1, 2]
<__main__.SeriouslyDont object at 0x000000000212D0F0>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다