您好Ive现在只编写了大约3周的时间,我偶然发现了这段代码,当我把它放进去时它没有做任何事情。
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
我知道它很简单,但我仍然是编程新手,如果有人可以简单解释为什么这不起作用我真的很感激。感谢
答案 0 :(得分:1)
由于缩进错误,它无法正常工作。缩进是Python知道def
是一个类的方法而不是顶级的普通函数,它如何知道哪些行是循环的一部分以及循环结束的位置等等。你必须得到对的。但是你有这个:
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
因为def
缩减回与class
相同的级别,所以课程中没有任何内容。那不合法;每个复合语句(以:
结尾的语句,如类定义)必须后跟缩进的内容。
最重要的是,multiply
采用self
参数的事实意味着它几乎可以肯定是某种类的方法。
所以,要解决它:
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
现在,它有效。但它似乎没有做任何事情,是吗?
当然,你总是不可能复制整件事。或者无论你从哪里复制它,代码都是错误的并且缺少一条线。但是,让我们假设这对某人有用的代码来说确实很有用(除了缩进错误)。
首先,你所做的只是定义一个类。如果永远不创建该类的实例,更不用说调用它上面的任何方法,该类不做任何事情。但是,让我们假设您知道这一点,并且您知道如何创建实例并调用方法。 仍然似乎无能为力。
最有可能(再次,假设这是您实际要求的,并且您正确地复制了代码,并且......)这样做的是存储操作数以供稍后使用。
为什么你想要这样做的一个现实例子是在某种表达式树库中,每当它解析multiply
时调用*
,并逐渐建立复杂的表达式可能是简单的,也许你可以将表达式编译成C代码或对其进行代数转换。
但这对你来说可能听起来像是gobbledegook,所以这里有一个简单而又愚蠢的例子:
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
table = []
for a in range(1, 5):
row = []
for b in range(1, 5):
col = calculation()
col.multiply(a, b)
row.append(col)
table.append(row)
print('Times table')
for row in table:
for col in row:
print('{} x {} = {}'.format(col.a, col.b, col.a * col.b))
答案 1 :(得分:0)
您的问题是class
内的功能是错误的。尝试缩进。此外,对于multiply
函数,您可能希望返回两个乘以的值:
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
return self.a * self.b