调用方法的最佳方法 - Python

am1*_*m17 1 python oop methods class python-2.7

我有这两个类,但我想知道在类中调用函数的最佳方法是什么.

我喜欢用这个属性:

class myclass():
    def myfunction(self):
        return self.x + self.y

z = myclass()
z.x = 4
z.y = 3
print z.myfunction()
Run Code Online (Sandbox Code Playgroud)

但我不知道这是否正确.或者我应该使用它而不是最后一个?

class myclass():
    def myfunction(self,x,y):
        return x + y

z = myclass()
print z.myfunction(4,3)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 9

这取决于.是xy状态的一部分myclass()或者是他们外在的东西与类交互?

如果xy不是myclass()实例状态的一部分,则不应将它们存储在属性中.它们将作为参数传递.

让我们说你有一个汽车对象,你需要知道如果汽车与其他东西发生碰撞会发生什么.那个"别的东西"不是汽车的一部分,所以你要调用这个car.collide()方法并将"其他东西"作为参数传递:

car.collide(something_else)
Run Code Online (Sandbox Code Playgroud)

但是碰撞时的汽车速度以及汽车的质量等等都是汽车对象状态的一部分,所以它们属于:

car.speed = 80
car.mass = 1200
car.collide(something_else)
Run Code Online (Sandbox Code Playgroud)

  • @Vashh:如果你设置属性*只是*来调用方法,那么这是不正确的.属性说明了对象的内容,并且通常在多个方法中指示行为. (2认同)