1

どのようにフォーマットしますか:

self.bot = servo.Robot({
        'waist': servo.Servo(3, 90, .02, 0),
        'shoulder': servo.Servo(4, 130, .03, 15),
        'elbow': servo.Servo(5, 110, .02, 19),
        'wrist': servo.Servo(6, 20, .01, 9),
        'claw': servo.Servo(7, 40, .01, 0)
    }, [5, 15, 25])

それが多すぎる場合は、self.bot という変数を作成し、dict とリストをパラメーターとして受け取る self.Robot(servo_dict, num_list) の戻り値と等しくします。

私はすでにPEP8この他のスタックオーバーフローの質問を見てきました。スタイルガイドへのリンクへの回答をお勧めします...

4

1 に答える 1

2

コンストラクターを使用するdictと、少なくとも一連の引用符を入力する必要がなくなります。

self.bot = servo.Robot(dict(
        waist = servo.Servo(3, 90, .02, 0),
        shoulder = servo.Servo(4, 130, .03, 15),
        elbow = servo.Servo(5, 110, .02, 19),
        wrist = servo.Servo(6, 20, .01, 9),
        claw = servo.Servo(7, 40, .01, 0)
    ), [5, 15, 25])

もちろん、次のようなヘルパー関数を作成することもできます。

def servos(**kwargs):
    for k, v in kwargs.iteritems():
        kwargs[k] = servo.Servo(*v)
    return kwargs

その後:

self.bot = servo.Robot(servos(
        waist = (3, 90, .02, 0),
        shoulder = (4, 130, .03, 15),
        elbow = (5, 110, .02, 19),
        wrist = (6, 20, .01, 9),
        claw = (7, 40, .01, 0)
    ), [5, 15, 25])

さまざまなタイプのインスタンスで多くの dicts-of-instances を実行する場合は、ヘルパーをジェネリックにすることができます。

def instance_dict(typ, **kwargs):
    for k, v in kwargs.iteritems():
        kwargs[k] = typ(*v)
    return kwargs

# later...
self.bot = servo.Robot(
               instance_dict(servo.Servo,
                   waist = (3, 90, .02, 0),
                   shoulder = (4, 130, .03, 15),
                   elbow = (5, 110, .02, 19),
                   wrist = (6, 20, .01, 9),
                   claw = (7, 40, .01, 0) ),
               [5, 15, 25])
于 2013-01-06T17:20:29.780 に答える