如何从不同的文件中继承类?

5 浏览
0 Comments

如何从不同的文件中继承类?

我有两个文件:\n

\nfig.py\n

\n

import math
PI=math.pi
class Fig:
    def __init__(self):   
        self.name= " "

\n和\n

\ncircle.py\n

\n

class Circle(Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["半径: ", radius]

\n但是当我尝试加载它们时,jupyter-notebook会报错:\n

\nNameError: name \'Fig\' is not defined\n

\n我尝试在circle.py的开头使用import fig,但它不起作用,同时运行两个文件也不行。它们都在同一个目录中。

0
0 Comments

在Python中,如果想要从一个文件中继承一个类到另一个文件中,需要通过导入(import)的方式实现。具体来说,问题出现的原因是在文件`circle.py`中需要从文件`fig.py`中导入类`Fig`。如果只简单地导入模块`fig`,那么在使用类`Fig`时必须通过相应的命名空间来访问它。解决这个问题的方法是可以通过导入`from fig import Fig`来直接使用类名。下面是一种解决方法的示例代码:

from fig import Fig
class Circle(Fig):
    # Class definition for Circle
    # ...

在上面的例子中,我们使用`from fig import Fig`语句将类`Fig`导入到了`circle.py`文件中,并且可以直接使用类名`Fig`来继承它。这样就能够在`Circle`类中使用来自`Fig`类的属性和方法了。

0
0 Comments

在Python中,我们可以从一个文件中继承一个类到另一个文件中使用。然而,有时候在继承类时会遇到一些问题。例如,我们可能会遇到以下错误提示: "No module named 'fig'"。

出现这个问题的原因是,在我们的circle.py文件中,我们需要使用from fig import FIG语句来导入fig.py文件中的类。这样我们才能够在circle.py中继承并使用fig.py中的类。

除此之外,我们还需要确保在包含circle.pyfig.py文件的文件夹中存在__init__.py文件。这个文件是一个空文件,它的存在告诉Python这个文件夹是一个Python包。

为了解决这个问题,我们可以按照以下步骤进行操作:

1. 在circle.py文件中添加from fig import FIG语句,以导入fig.py文件中的类。

2. 确保在包含circle.pyfig.py文件的文件夹中存在__init__.py文件。

如果您想了解更多关于导入类的问题,可以参考以下链接:

- [Importing a function from a class in another file?](https://stackoverflow.com/a/6757225/2063361)

- [What is __init__.py for?](https://stackoverflow.com/questions/448271)

通过按照以上步骤,我们可以成功在Python中从不同文件中继承类。

0
0 Comments

在这段内容中,问题的出现是由于在circle.py文件中没有正确指定类的命名空间。根据作者的推测,如果circle.py文件的代码如下所示:

import fig
class Circle(Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]

这会导致错误,因为Python不知道如何找到Fig。解决方法是要么在类名前加上命名空间(第一种解决方法),要么显式地导入类(第二种解决方法)。修改后的代码如下所示:

import fig
class Circle(fig.Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]

或者

from fig import Fig
class Circle(Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]

这样修改后,问题应该就解决了。同样的逻辑也适用于使用PI的情况:

import fig
class Circle(fig.Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]
        #通过指定命名空间来使用fig.py中的PI
        self.circumference = 2.*fig.PI*radius 

或者

from fig import Fig, PI
class Circle(fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]
        #通过显式导入PI,无需命名空间
        self.circumference = 2.*PI*radius

两种方法都可以实现继承,但前两行代码无法正常工作。如果运行circle.pyPI将无法识别。如果同时运行这两个文件,将会得到SyntaxError: invalid syntax的错误。

0