类继承

0 投票
2 回答
4565 浏览
提问于 2025-04-15 19:12

我正在努力搞懂Python中的类继承。之前我写的程序都是把类放在一个文件里。我也写过一些只包含函数的多个文件的脚本。现在我开始在多个文件的脚本中使用类继承,但遇到了一些问题。我有两个基本的脚本,想让第二个脚本继承第一个脚本的值。代码如下:

第一个脚本:

class test():

    def q():

        a = 20
        return a

    def w():
        b = 30
        return b

    if __name__ == '__main__':
        a = q()
        b = w()

if __name__ == '__main__':
    (a, b) = test()

第二个脚本:

from class1 import test

class test2(test):

    def e(a, b):
        print a
        print b


    e(a, b)

if __name__ == '__main__':
    test2(test)

有没有人能告诉我怎么让第二个文件继承第一个文件的值?谢谢大家的帮助。

2 个回答

1

在Python中,类里的每个成员函数(方法)都应该有一个叫做self的变量,这个变量的作用和C++、Java、C#中的this指针/引用差不多。

简单来说,为了让你的代码正常工作,记得把self作为所有方法的第一个参数。要给成员变量赋值或者读取它们时,使用self.aself.b,否则你现在的写法只是创建了临时的函数变量。

13

我觉得你在类的定义和函数的部分搞混了。它应该更像这样:

class Test(object):

    def __init__(self):
        self.a = 20
        self.b = 30

if __name__ == '__main__':
    test_instance = Test()

还有

from class1 import Test

class Test2(Test):

    def e(self):
        print self.a
        print self.b


if __name__ == '__main__':
    test_instance = Test2()
    test_instance.e() # prints 20 and 30

看起来你的问题不仅仅是继承的问题,更是如何正确地在Python中定义类

几点说明:

  • 类的名字要用大写字母开头。这是一个约定俗成的规则。
  • 正如ruibm提到的,每个(非静态)类的方法的第一个参数通常要命名为self
  • 你可以通过在__init__方法中设置self.variable = value来创建实例变量。
  • 如果你调用Test(),你会得到一个对象。如果不把它赋值给一个变量,那么像你在第二段代码中那样直接调用test2()是没有效果的。也许在你的情况下是因为你以一种奇怪的方式定义了类。

撰写回答