试图从父类继承变量“NameError: name 'r' is not defined”

thecoolred303

我似乎无法从父 'Circle' 类中获取半径 'r' 变量并在子 'Cylinder' 类中使用它。尝试了多种不同的方法,似乎找不到我的错误!

class Circle(Point):

    def __init__(self, r):
        self.r = r

class Cylinder(Circle):

    def __init__(self,h):
        Circle.__init__(self,r)
        self.h = h

此代码导致以下错误

>>> circle = Circle(5)
>>> cylinder = Cylinder(3)
Traceback (most recent call last):
  File "<pyshell#123>", line 1, in <module>
    cylinder = Cylinder(3)
  File "C:/Users/theco/Desktop/OOP Shape.py", line 49, in __init__
    Circle.__init__(self, r)
NameError: name 'r' is not defined

任何帮助,将不胜感激!谢谢!

德维什·库马尔·辛格

您的代码有一些问题。

  1. 你不是Circle通过do 来调用超类的构造函数Circle.__init__(self,r),而是通过do super().__init__(r),这意味着我想调用superorParent的构造函数

  2. 你是不是通过r在构造函数中Cylinder,(你只是做__init__(self,h):,但你想用它传递给构造函数Circle这是不可能的,你需要通过双方rh给构造的Cylinder类似__init__(self, r, h):

所以你的固定代码看起来像

class Circle(Point):

    def __init__(self, r):
        self.r = r

class Cylinder(Circle):

    #Passing both r and h to Cylinder constructor
    def __init__(self,r, h):
        #Passing r to Circle Constructor
        super().__init__(r)
        self.h = h

然后当你相应地调用它时,你会看到它现在起作用了

circle = Circle(5)
print(circle.r)
#5
cylinder = Cylinder(5, 3)
print(cylinder.r)
#5
print(cylinder.h)
#3

也只是为了幽默自己,尝试定义areavolume功能Circle,并Cylinder分别,你会看到传承的力量

import math
class Circle(Point):

    def __init__(self, r):
        self.r = r

    #Area of circle is pi*r*r
    def area(self):

       return math.pi * self.r * self.r

class Cylinder(Circle):

    #Passing both r and h to Cylinder constructor
    def __init__(self,r, h):
        #Passing r to Circle Constructor
        super().__init__(r)
        self.h = h

    #Volume of cylinder is pi*r*r*h
    def volume(self):

        return self.area()*self.h

然后您可以按如下方式调用它们:

circle = Circle(5)
print(circle.area())
#78.53981633974483
cylinder = Cylinder(5, 3)
print(cylinder.volume())
#235.61944901923448

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在类中导入模块时出现“NameError: name [module] is not defined”

导入 kafka 给出“NameError: name 'true' is not defined”

NameError: ("name 'true' is not defined", 'occurred at index 0')

如何修复“NameError: name 'context' is not defined”

如何修复“NameError: name 'color' is not defined”?

如何解决 NameError: name 'xx' is not defined?

iPython调试器引发`NameError:name ... not defined`

不明白这个“NameError: name 'self' is not defined”错误

“NameError: name 'update' is not defined” 使用数据表时出错

如何解决错误 NameError: name 'SparkConf' is not defined in pycharm

Scrapy:在scrapy 中使用SQLAlchemy 有“NameError: name 'connection' is not defined”

为什么我会收到“NameError: name 'self' is not defined”?

我有一个错误:NameError: name 'GameDisplay' is not defined

错误“NameError: name 'self' is not defined”即使我声明了“self”

raise self._value NameError: name 'global_df' is not defined

无法在 18.04 中添加 PPA 密钥:NameError: name 'KUrl' is not defined

如何正确配置python 3的使用避免NameError: name '' is not defined

Django连接mysql问题,NameError: name '_mysql' is not defined

在 Django 中使用类型提示 Any - NameError: name 'Any' is not defined

为什么python在定义时返回“NameError:name 'correct' is not defined?

NameError: name 'i' is not defined - 为什么会发生这种情况?

如何在 python 中关于海面温度的图中修复“NameError: name 'cartopy' is not defined'?

为什么此重新加载失败并显示“NameError: name <xxx> is not defined”?

为什么会出现 NameError 的错误:name 'file' is not defined in python 3

NameError: name '' is not defined - 将函数返回作为输入传递给另一个函数

尝试打印出一个矩阵 NameError: name 'Qb_matrix' is not defined

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NameError: name 'open_account' is not defined

訪問以前定義的變量時出現“NameError: name not defined”

它說 NameError: name 'Doctor' is not defined 當我嘗試執行時