问题描述
我正在尝试使用我的同事之前已成功运行的代码。
类和函数定义为:
Class X:
def f1(self,params)
...
def f2(self,params)
...
Class Y(X):
def f3(self,params..)
...
def G(self,params):
... so on
所有这些都保存在笔记本的“ classes.py”文件下。
因此,在我的jupyter笔记本中,我试图将函数G()调用为:
import classes
X.G(params)
现在我收到类似这样的错误
" name 'X' is not defined "
我也尝试过像Y.G(params)
这样的电话
并得到类似的错误,例如未定义名称Y。
我相信,代码没有错误,因为它以前已经运行过。
任何人都可以在这里解释可能出什么问题的地方。
另外,我不了解Class Y(X)
的行定义。
我的假设是,Y类是X类的子类。
但是,无论如何,一些见解是有帮助的。
谢谢
解决方法
class X:
def print_a(self):
print('a')
def print_b(self):
print('b')
class Y(X):
def print_a(self):
print('overriden print a from class X')
instance = Y()
instance.print_a()
返回
覆盖X类的打印a
当您在另一个类中继承一个类时,您可以使用继承的类中的功能,添加其他功能,甚至重写功能。
编辑:
由于您import classes
,您的陈述应该像
import classes
instance = classes.Y() #You should call a method from an instance of the class:
instance.G() #and the call the method:
,
由于未定义name X is not defined
,因此出现X
错误。如果您使用from classes import X
或以classes.X()
的身份访问它,它将可用。另外,您通常想命名一个类的实例
foo = classes.X()
例如。