我是python和对象语言的新手。我现在在python学习课程。但下面的代码让我很困惑。
class math:
def __init__(self, a, b):
self.a = a
self.b = b
math.add = self.a+self.b
def sum(self):
math.sum = self.a+self.b
s= math(2,1)
x = math.add
y = math.sum
结果看起来不对。 x是3但y不是3.我的问题在哪里?
感谢
答案 0 :(得分:3)
我猜你想要做的就是这个。
class math:
def __init__(self, a, b):
self.a = a
self.b = b
self.add = self.a+self.b
def sum(self):
return self.a+self.b
s= math(2,1)
x = s.add
y = s.sum()
print(x)
print(y)
错误如下
您没有调用math
的实例。由于这些是实例方法,因此必须引用x = math.add
实例应为x = s.add
。
您创建了一个方法sum
,但没有调用它y = s.sum
只是创建了对该函数的引用而没有调用它,而是应该使用y = s.sum()
您的函数sum
不返回任何内容,因此为其返回值赋值将产生None值。要解决这个问题,请从sum return self.a + self.b
返回一个值。
self.add
也很奇怪,因为它的命名就像一个函数,但它实际上是一个值,其他人看不到你的代码就不会这样。一个更好的名称可能是全部或删除它,因为它提供与sum
相同的功能。