2016-05-07 5 views
0

私はクラスモーターを作ります。モーターのセットアップを制御するので、制御が簡単になります。クラスステッパー2引数1インスタンス

これは私がしたいことです。

class robot(object): 

def __init__(self, addr=0x60, port, revolution, speed): 
    self._mh = Adafruit_MotorHAT(addr) 
    self._stepper = self._mh.getStepper(port, revolution) 
    self._speed = self._mh.setSpeed(speed) 

デフォルトの引数の後にデフォルト以外の引数がありますが、構文エラーです。これは、1つのインスタンスで使用する2つの引数があるためです。私はdef設定をすることができ、それは動作します。

self._mh = Adafruit_MotorHAT(addr) 
    self.port = port 
    self.revolution = revolution 
    self._speed = self._mh.setSpeed(speed) 

def setup(self): 
     self._mh.getStepper(self.port, self.revolution) 

しかし、私は起動部に持っていますので、motor.setup()を呼び出す必要はありません。

これは、クラスにメソッドを追加するよりも、これを行うほうが良い方法でしょうか?したがって、メソッドにあるでしょう。

+0

エラーメッセージは明らかです:デフォルト引数の後にデフォルト以外の引数があります。どうしてあなたは一気に入れ替えるのですか? –

+0

@Danielデフォルトの引数が何であるかを指定できますか? (おそらくアドレター) –

答えて

2

デフォルトでない引数は、値を与えたことを意味します。 例:addr=0x60 これらのデフォルト以外の引数は、通常の引数の後に配置する必要があります。このよう :

def __init__(self, port, revolution, speed, addr=0x60): 
    self._mh = Adafruit_MotorHAT(addr) 
    self._stepper = self._mh.getStepper(port, revolution) 
    self._speed = self._mh.setSpeed(speed) 
1

必須の引数は、関数のシグネチャではオプションの引数の前に来ます。

関連する問題