저는 OOP에서 Python (ver. 3.5)을 처음 사용합니다. 제네릭 클래스를 만들었으므로이 클래스를 상속받은 새로운 클래스를 만들고 싶습니다.부모 클래스를 상속 한 자식 클래스에서 부모 클래스에 정의 된 클래스 인수 전달
부모 클래스 (예 : A
)에는 __init__()
메소드 내에 정의 된 두 개의 arg가 있습니다. 어떻게하면 내 자식 클래스 (예 : B
)에있는 사람들을 상속받을 수 있도록 내가 B
을 인스턴스화 할 때 나는 그것을 전달할 args를 A
에 전달할 수 있습니까? 실제로 실제로 super()
함수를 사용하려고하지만 결과에 대해서는 확신 할 수 없습니다.
TypeError: __init__() takes 1 positional argument but 3 were given
class A(): # parent class
def __init__(self, x, y):
self.x = x
self.y = y
class B(A): # child class
def __init__(self):
super().__init__(x, y)
을 제공합니다 그리고 내가 할 것 (예를 들어) 내 질문의 중복으로 확인되면서 b = B(5, 5)
EDIT 1
this answer, 나는 그것이 왜 다른가, 왜 그 대답이 내 문제를 해결하는 데 도움이되지 않았는가를 언급하고자한다 :
자식 클래스에서 부모 클래스의 매개 변수에 액세스하는 방법에 대해서는 묻지 않지만 부모 클래스가 상속 된 클래스를 인스턴스화 할 수있는 경우에는 해당 호출에 대한 호출과 같이 인수를 전달합니다. 부모님의 수업.
자식 클래스 __init__()
메서드에서 동일한 인수를 다시 정의하지 않는 한 대답은 "할 수 없습니다"입니다. 마지막으로, OOP를 처음 접했을 때 말한 것처럼, 초기 질문은 나에게 이해하기가 너무 어렵 기 때문에 (그리고 심지어 파이썬에서조차도 아니기 때문에) 표시된 대답은 도움이되지 못했다.
당신은 할 수 없습니다. 함수가 취하는 매개 변수를 지정해야합니다. 'B .__ init() __'은 당신이 호출하는 호출 서명을 가지고 있어야합니다. –
괜찮 았기 때문에 클래스 B (A) : def __init __ (self, x, y) super() .__ init __ (x, y)와 같은 일을해야합니다. 그렇지 않으면 부모 클래스를 다시 작성해야합니다. – umbe1987
맞습니다. –