类继承

chr*_*ley 0 python inheritance class

我试图完全掌握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()
Run Code Online (Sandbox Code Playgroud)

第二个脚本:

from class1 import test

class test2(test):

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


    e(a, b)

if __name__ == '__main__':
    test2(test)
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释如何让第二个文件继承第一个文件的值?谢谢你的帮助.

Fel*_*ing 13

我会说你用函数搞砸了类定义.它应该看起来更像这样:

class Test(object):

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

if __name__ == '__main__':
    test_instance = Test()
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

看起来您的问题不是(仅)继承,而是如何在Python中正确定义类.

一些说明:

  • 始终对类使用大写名称.这或多或少是惯例.
  • 正如ruibm所指出的,类的每个(非静态)方法都必须具有一个名为(按照惯例)命名的第一个参数self.
  • 您可以通过self.variable = value__init__方法中设置实例变量来创建实例变量.
  • 如果你打电话给Test()你,你会得到一个物品.除非您将其分配给变量,否则只需test2()在第二段代码中进行调用即可.也许它在你的情况下因为以一种奇怪的方式定义你的类.