在Python中创建对象时使用self

在Python中创建对象时使用self,python,object,self,Python,Object,Self,我上了几个课程,它们都在做同样的事情,但我仍然不完全理解其中的区别,哪一个是最好的。另外,第四个对象不工作。上面写着“NameError:name'self'没有定义”,尽管我不明白出了什么问题。这是我写的,输出是7,7,7,0: class addTwoNumbers1(object): def __init__(self, number1, number2): self.number1 = number1 self.number2 = number2

我上了几个课程,它们都在做同样的事情,但我仍然不完全理解其中的区别,哪一个是最好的。另外,第四个对象不工作。上面写着“NameError:name'self'没有定义”,尽管我不明白出了什么问题。这是我写的,输出是7,7,7,0:

class addTwoNumbers1(object):

    def __init__(self, number1, number2):
        self.number1 = number1
        self.number2 = number2
        self.result = number1 + number2


class addTwoNumbers2(object):

    def __init__(self, number1, number2):
        self.result = number1 + number2


class addTwoNumbers3(object):

    def __init__(self, number1, number2):
        self.number1 = number1
        self.number2 = number2

    def Add(self):
        result = self.number1 + self.number2
        return result


class addTwoNumbers4(object):

    result = 0

    def __init__(self, number1, number2):
        self.number1 = number1
        self.number2 = number2

    result = self.number1 + self.number2


# Test classes for adding two numbers:

addingObject1 = addTwoNumbers1(5,2)
print addingObject1.result

addingObject2 = addTwoNumbers2(5,2)
print addingObject2.result

addingObject3 = addTwoNumbers3(5,2)
print addingObject3.Add()

addingObject4 = addTwoNumbers4(5,2)
print addingObject4.result

提前感谢您的建议。

好吧,您的类看起来应该是一个函数,但我假设这只是一个示例。话虽如此


当您的对象需要存储构成它的值以及它们产生的结果时,这非常有用:

class addTwoNumbers1(object):

    def __init__(self, number1, number2):
        self.number1 = number1
        self.number2 = number2
        self.result = number1 + number2
class addTwoNumbers2(object):

    def __init__(self, number1, number2):
        self.result = number1 + number2

当您的对象需要存储的不是构建它的值,而是由它们生成的值时,这非常有用:

class addTwoNumbers1(object):

    def __init__(self, number1, number2):
        self.number1 = number1
        self.number2 = number2
        self.result = number1 + number2
class addTwoNumbers2(object):

    def __init__(self, number1, number2):
        self.result = number1 + number2

当对象只需要存储构造它的值时,这非常有用。结果应按需求计算,而不是对象状态的一部分

class addTwoNumbers3(object):

    def __init__(self, number1, number2):
        self.number1 = number1
        self.number2 = number2

    def Add(self):
       result = self.number1 + self.number2
       return result

没有。没有道理。这是一个类变量

类addTwoNumbers4(对象):


result=self.number1+self.number2
应该在函数内部,因为self只在方法内部被识别感谢您的澄清