我怎么知道什么时候在 self 之后加上参数?
How do I know when to put an argument after self?
假设您正在创建一个 NFS 游戏。为此,我们应该有一辆车。 Car 可以有 "color"、"company"、"speed_limit" 等属性和 "change_gear"、"start"、"accelarate"、"move" 等方法等等
所以在这个例子中,为什么他们在最后一个函数的 self 之后加上一个参数(gear_type 在 change_gear 函数的 self 之后),而不是其他的?
简单地说,当您的方法需要执行其他信息并且该信息位于对象外部时,您可以在 self
之后包含一个参数,否则您可以通过 self.attribute
将对象视为状态容器。改变其内部状态的唯一方法是调用一个方法。启动、停止和加速根据先前的状态更改状态,它们不依赖于其他任何东西来工作,因为它们需要的一切都已经包含在汽车状态中或可以推导出汽车状态。现在,你想改变一个齿轮,你想用别的东西,另一个齿轮来改变它,所以你的方法需要接收缺失的部分。
将方法视为消息,因为 OOP 就是这样,向对象发送消息。如果您对汽车说要启动、停止或加速,则消息本身就是完整的。现在,如果你说,改变你的装备,你必须提供一个新的装备和消息,这样消息才有意义,它可以根据你提供的装备改变它的装备。
在Python中,方法的第一个参数是它自身的对象。这是状态容器。当您调用 object.method(arg)
时,解释器会将其替换为对象,变为 object.method(object, arg)
。你可以随意命名,但 self 是一个既定的约定
希望对您有所帮助
假设您正在创建一个 NFS 游戏。为此,我们应该有一辆车。 Car 可以有 "color"、"company"、"speed_limit" 等属性和 "change_gear"、"start"、"accelarate"、"move" 等方法等等
所以在这个例子中,为什么他们在最后一个函数的 self 之后加上一个参数(gear_type 在 change_gear 函数的 self 之后),而不是其他的?
简单地说,当您的方法需要执行其他信息并且该信息位于对象外部时,您可以在 self
之后包含一个参数,否则您可以通过 self.attribute
将对象视为状态容器。改变其内部状态的唯一方法是调用一个方法。启动、停止和加速根据先前的状态更改状态,它们不依赖于其他任何东西来工作,因为它们需要的一切都已经包含在汽车状态中或可以推导出汽车状态。现在,你想改变一个齿轮,你想用别的东西,另一个齿轮来改变它,所以你的方法需要接收缺失的部分。
将方法视为消息,因为 OOP 就是这样,向对象发送消息。如果您对汽车说要启动、停止或加速,则消息本身就是完整的。现在,如果你说,改变你的装备,你必须提供一个新的装备和消息,这样消息才有意义,它可以根据你提供的装备改变它的装备。
在Python中,方法的第一个参数是它自身的对象。这是状态容器。当您调用 object.method(arg)
时,解释器会将其替换为对象,变为 object.method(object, arg)
。你可以随意命名,但 self 是一个既定的约定
希望对您有所帮助