如何在Python中调用其他对象的方法?

时间:2014-03-16 15:15:24

标签: python python-2.7

我是python中的新手,我有一个小问题,我有两个类,并且它表示:set_gyro_angle()只需要1个参数(给定2个)如何调用 set_gyro_angle()机器方法的方法?

class Gyro(object):
    """gyroskop senzor"""
    def __init__(self,gyro_start_angle = 0):
        self.gyro_angle = 0 
    def get_gyro_angle():
        return self.gyro_angle
    def set_gyro_angle(angle):
        self.gyro_angle = angle
        return 0

class Maschine(object):
    def __init__(self, state = "normal",length = 10,width = 15):
        self.length = length
        self.width = width
        self.gyro = Gyro()
    def setPoint(self,alpha):
        self.gyro.set_gyro_angle(alpha)
        return 0

主要:

maschine  = Maschine()
maschine.setPoint()

3 个答案:

答案 0 :(得分:2)

如果要创建实例方法,则需要添加一个额外的参数,该参数将是指向实例的指针。通常是self

class Gyro(object):
    """gyroskop senzor"""
    def __init__(self,gyro_start_angle = 0):
        self.gyro_angle = 0 
    def get_gyro_angle(self):
        return self.gyro_angle
    def set_gyro_angle(self, angle):
        self.gyro_angle = angle
        return 0

我认为你希望setPoint是这样的:

def setPoint(self, alpha):
    self.gyro.set_gyro_angle(alpha)

答案 1 :(得分:2)

所有实例方法都应该有其他参数self,而不是其他参数;这是实例本身,并自动传递:

def set_gyro_angle(self, angle):

或者,跳过设置器:

self.gyro.gyro_angle = alpha

答案 2 :(得分:2)

Machine.gyro.set_gyro_angle(45)

但是,您需要通过添加self参数作为类方法的第一个参数来修复代码。