嘿,我是这个python的新手。有几天学习所有关于课程,但在一开始我有问题。我遇到了这种错误TypeError: __init__() missing 1 required positional argument: 'nazwa'
。你能帮我解决一下吗?我想打印出我的对象的计算。
class Figura(object):
def __init__(self,nazwa):
self.nazwa = nazwa
def calculate(self):
print(self.nazwa)
class Kolo(Figura):
def __init__(self,nazwa,promien):
Figura.__init__(self)
self.promien = promien
def calculate(self):
Figura.calculate(self)
print(2 * 3.1415 * promien)
kolo1 = Kolo('kolo',4)
kolo1.calculate()
答案 0 :(得分:1)
您需要在nazwa
方法调用中传递Kolo.__init__()
参数:
class Kolo(Figura):
def __init__(self, nazwa, promien):
Figura.__init__(self, nazwa)
self.promien = promien
您可能希望在那里使用super()
function,避免重复父类:
class Kolo(Figura):
def __init__(self, nazwa, promien):
super().__init__(nazwa)
self.promien = promien
def calculate(self):
super().calculate()
print(2 * 3.1415 * self.promien)
请注意,我也更正了您的Kolo.calculate()
方法;您想引用self.promien
而不是使promien
成为本地名称。
演示:
>>> class Figura(object):
... def __init__(self,nazwa):
... self.nazwa = nazwa
... def calculate(self):
... print(self.nazwa)
...
>>> class Kolo(Figura):
... def __init__(self, nazwa, promien):
... super().__init__(nazwa)
... self.promien = promien
... def calculate(self):
... super().calculate()
... print(2 * 3.1415 * self.promien)
...
>>> kolo1 = Kolo('kolo',4)
>>> kolo1.calculate()
kolo
25.132