首页
学习
活动
专区
圈层
工具
发布

类继承
EN

Stack Overflow用户
提问于 2010-02-12 22:55:05
回答 2查看 4.5K关注 0票数 0

我正在尝试完全掌握Python中的类继承。我已经创建了带有类的程序,但它们都在一个文件中。我还创建了包含多个文件的脚本,这些文件只包含函数。我已经开始在包含多个文件的脚本中使用类继承,我遇到了一些问题。我下面有两个基本脚本,我正在尝试让第二个脚本继承第一个脚本的值。代码如下:

第一个脚本:

代码语言:javascript
复制
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()

第二个脚本:

代码语言:javascript
复制
from class1 import test

class test2(test):

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


    e(a, b)

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

谁能给我解释一下如何让第二个文件继承第一个文件的值?谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-12 23:01:48

我会说你把类的定义和函数的东西搞乱了。它应该看起来更像这样:

代码语言:javascript
复制
class Test(object):

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

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

代码语言:javascript
复制
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

看起来你的问题不仅仅是继承,还有如何正确的 。

一些注意事项:

  • 始终使用大写的类名。正如ruibm指出的那样,类的每个(非静态)方法都必须有一个名为self.
  • You的第一个参数(根据约定),它可以通过在__init__方法中将实例变量设置为self.variable = value来创建实例变量。
  • 如果你调用Test(),你会得到一个返回的对象。除非将它赋给一个变量,否则只像在第二段代码中那样调用test2()是没有效果的。也许在您的例子中是这样的,因为它以一种奇怪的方式定义了您的类。
票数 13
EN

Stack Overflow用户

发布于 2010-02-12 23:02:03

在Python语言中,类的每个成员函数(方法)都应该有一个名为self的变量,它几乎就是C++、Java、C#中的this指针/引用。

基本上,为了使您的代码正常工作,将self作为第一个参数添加到所有方法。要分配/读取成员变量,请使用self.aself.b,否则您只需按现在的方式创建临时函数变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2252620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档