我刚开始用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:没有识别问题。
答案 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