从基类调用函数

2024-04-20 14:52:30 发布

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

我是Python新手。在

我有一个类,它有一些通用的定义,这些定义将在一个模块中的其他几个类中使用。这是我程序的当前结构。在

 class A(object):

    def __init__(self, x, y):
        """Initialization method"""
        super(A, self).__init__()
        self.x = x
        self.y = y

    def function_1(self, ftype):
        <<<some steps>>>
        return abc

    def function_2(self, stype):
        <<<some steps>>>        
        return xyz

class B(A):
    def __init__(self, x, y, e_type):
        A.__init__(self, x, y)
        self.e_type = enablement_type

    def function_3(self, mtype):
        <<<some steps>>>
        **HERE I need to call the function1 and function2 of class A**

1:从基类调用函数

^{pr2}$

正确的方法吗?派林说我这么做很好。在

他说:还有,你能简单地说一下超级吗


Tags: 模块self程序return定义objectinitdef
2条回答

对于您的第一个问题: 您所做的是使用继承概念实现代码的可重用性。在

一旦你说了“类B(A)”,A的所有成员和函数都可以在B中使用。因此,u可以直接调用B函数,如下所示

self.function1(ftype='new')
self.function2(stype='new')

这是在Python中访问实例的任何函数的典型方法。 你在问题中提到的只是访问任何其他文件中的静态函数。不管怎样,这都会奏效的。但这与继承无关。在

关于第二个问题: 在继承的情况下,您可以选择从基类中完全重新定义泛型可重用函数,或者为特殊情况扩展某些功能,或者只按原样使用。 在扩展现有函数的情况下,您需要做的是重写要扩展的函数,它的主体应该调用所有基类函数,然后调用其他代码。这里调用基类函数是用超级功能()

^{pr2}$

init()是特殊函数,称为构造函数。在实例化类时调用,如“objInstance=B()”。其他功能如上文所述。在

希望它能澄清你的疑虑。在

通常,您会调用如下继承函数:

self.function1('new')
self.function2('new')

您编写的代码可以工作,但需要您标识包含这些方法的确切基类。这是一个复杂的问题,也是一个潜在的错误,可以通过让继承来完成它的工作来避免。在

相关问题 更多 >