命名如何在python类中工作?

时间:2017-06-27 17:18:18

标签: python class

我是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)

2 个答案:

答案 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)

接受参数并将其添加到其实例变量并打印结果。