저는 파이썬을 배우고 마침내 공장에서 놀고 있습니다. 아래 코드는 나에게 다음과 같은 오류를주고 있으며 나는 그 이유를 모른다.Python 코드 실 거예요 불필요한 TypeError를 실행했는데 이유가 확실하지 않습니까?
Traceback (most recent call last):
File "C:\py_Lab\Factory.py", line 38, in <module>
print(MyFactory("Ham").x)
File "C:\py_Lab\Factory.py", line 30, in MyFactory
if cls.Check(myStr):
TypeError: Check() missing 1 required positional argument: 'myStr'
공장의 정의는 기본 클래스의 하위 클래스를 통해 루프를 가정하고 실행하는 클래스 선택 하위 클래스에서 Check()
정의를 사용한다. 매개 변수 'myStr'
이 있어야하며 공장 인스턴스에 인수를 배치했는지 확신합니다. 이 오류는 파이썬이 컴파일하는 방식 때문에 발생합니까? Windows 8
컴퓨터에서 python 3.5
을 실행 중입니다.
class BaseClass(object):
pass
class AltBaseClass(object):
pass
class C1(BaseClass, AltBaseClass):
def __init__(self, *args, **kwargs):
self.x = 1
def Check(self, myStr, *args, **kwargs):
return myStr == "Ham"
class C2(BaseClass, AltBaseClass):
def __init__(self, *args, **kwargs):
self.x = 30
def Check(self, myStr, *args, **kwargs):
return myStr == "Sandwich"
class C3(BaseClass, AltBaseClass):
def __init__(self, *args, **kwargs):
self.x = 70
def Check(self, myStr, *args, **kwargs):
return myStr == "Pancake"
def MyFactory(myStr):
for cls in BaseClass.__subclasses__():
if cls.Check(myStr):
return cls()
def OthrFactory(myStr):
for cls in AltBaseClass.__subclasses__():
if cls.Check(myStr):
return cls()
print(MyFactory("Ham").x)
print(OthrFactory("Sandwich").x)
print(OthrFactory("Pancake").x)
당신은 인스턴스 메소드로'Check'을 썼지 만 인스턴스가 없습니다. – user2357112