我是python中使用类的新手。我不明白/了解他们的工作方式。虽然我熟悉使用函数,但我有一种偷偷摸摸的感觉,我在课堂上命名项目时遇到了一些问题。
我还没有找到任何教程的答案, 因此,有人可以向我解释这个问题尽可能简单,告诉我我做错了什么,我会非常高兴。
这是我的类 - 这个简单类要添加的目标fpr 1到给定的任何数字,在这种情况下,该数字是5。
class do_math:
def __init__(self, num):
self.add = num
def add(self,num):
self.add = num + 1
print (self.add)
x = do_math(5)
print (x.add)
答案 0 :(得分:0)
这里有几个概念问题。首先,您希望add
成为值还是方法?您已将它用作两者,这会导致最近使用删除前一个。简而言之,您已经破坏了add
函数,这是第一个原因,因为您的程序无效。
class do_math:
def __init__(self, num):
self.value = num
def add(self,num):
self.value = num + 1
print ("self", self.value)
x = do_math(5)
print ("x", x.value)
请注意,不称为方法add
- 不在您的原始代码中,而是在我上面的简单更新中。这足以让你解开剩下的问题吗?另一个问题是add
期望值num
- 但这个值是多少?该对象已经保存5
,而+1
被硬编码到例行程序中......那么您还需要什么,以及它来自哪里?
如果没有,那么请回到更简单的课程。完成初始化和单行添加;确保在进入下一步之前了解每一步。
答案 1 :(得分:0)
我稍微修改了你的代码:
#!/usr/bin/python3
class DoMath:
def __init__(self, num):
self.num = num
def add(self, num):
self.num = self.num + num
print(self.num)
x = DoMath(5)
x.add(2) # prints 7
x.add(3) # prints 10
x.add(4) # prints 14
第x = DoMath(5)
行创建了类DoMath
的实例,并将其分配给变量x
。数字5
是构造函数的参数。
构造函数定义如下:
def __init__(self, num):
self.num = num
它有一个参数num
,其值分配给属性/实例变量(self.num
)。
行x.add(2)
是一个方法调用。它在add
的实例上调用方法DoMath
,参数为2
。
方法add
定义如下:
def add(self, num):
self.num = self.num + num
print(self.num)
接受参数并将其添加到其实例变量并打印结果。