类,继承[初级]Python

2024-09-28 22:32:08 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,我对这条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()

Tags: selfinitdef错误时间class课程print
1条回答
网友
1楼 · 发布于 2024-09-28 22:32:08

您需要在Kolo.__init__()方法调用中传递nazwa参数:

class Kolo(Figura):
    def __init__(self, nazwa, promien):
        Figura.__init__(self, nazwa)
        self.promien = promien

您可能希望改用^{} 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

相关问题 更多 >