python中的继承不起作用

时间:2013-12-17 22:23:37

标签: python

我刚开始用Python编写代码。我使用的是Windows 8.我有以下代码,但它无法使用。但是代码在Ubuntu上运行良好。两个操作系统上的python版本相同。

 class test:
      def __init__(self):

            def add(self,a,b):
                    print a+b

 class subclass(test):
    print "testing"


 s = subclass()

 s.add(1,2)

输出如下:

 s.add(1,2)

 AttributeError: subclass instance has no attribute 'add'

PS:没有识别问题。

3 个答案:

答案 0 :(得分:2)

如果你的代码按照需要缩进,那么add()函数只存在于__init__()中,永远不会成为类的一部分。即使您有test的实例,没有可能的方式您的代码也可以正常工作。

答案 1 :(得分:1)

如果缩进是正确的,如上所述,您应该添加

self.add = add 

__init__。现在你在本地__init__范围内声明添加函数,但是无处分配,所以它立即被垃圾收集。

<强>更新

作为没有缩进问题作者声明似乎是指代码成功执行而没有引发IndentationError,正确的行动似乎同样缩进__init__并且add,要将它们作为实例方法,并删除空__init__或添加pass占位符:

class test:
    def __init__(self): pass
    def add(self,a,b):
        print a+b

class subclass(test):
    print "testing"

答案 2 :(得分:0)

为什么你有一个空的 init 方法?如果需要, init 实现不能为空。 你可以尝试:

class test:
   def __init__(self):
       pass
   def add(self, a, b):
      print a+b

或者:

class test:
    def add(self, a, b):
        print a+b