2016-05-07 2 views
0

Я делаю классный двигатель. Он будет управлять настройкой двигателя, поэтому его будет легче контролировать.класс stepper 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) 

Я не работаю и даю синтаксическую ошибку, аргумент по умолчанию не соответствует аргументу по умолчанию. Это потому, что у меня есть 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().

Возможно, это лучший способ сделать это, чем добавить метод к классу? Так было бы в методе init.

+0

Сообщение об ошибке кажется совершенно ясным: у вас есть аргументы, отличные от значения по умолчанию, после аргумента по умолчанию. Почему вы не делаете очевидную вещь, которая заключается в том, чтобы обменивать их? –

+0

@ Daniel Можете ли вы указать для меня, что такое аргумент по умолчанию. (Возможно, Addr) –

ответ

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

Необходимые аргументы прийти до необязательных аргументов в сигнатуры функций.

Смежные вопросы