まず、不要な括弧を取り除きます。コードの構造をたどりにくくするだけです。
def b(self):
if self.a() == 'Buy':
return 'BUY SET'
elif self.a() == 'Sell':
return 'SELL SET''
'
次に、それを発生させる原因となる迷子を取り除きSyntaxError
ます:
def b(self):
if self.a() == 'Buy':
return 'BUY SET'
elif self.a() == 'Sell':
return 'SELL SET'
次に、二度電話しないでくださいself.a()
。ここでは無害ですが、実際のコードでは、副作用が発生する可能性が非常に高く、少なくとも時間を無駄にするほど時間がかかります。
def b(self):
order = self.a()
if order == 'Buy':
return 'BUY SET'
elif order == 'Sell':
return 'SELL SET'
次に、ora
以外を返す場合は、 を返します。それは本当にあなたが望むものですか?これをどのように修正するかは、実際に何を望んでいるかによって異なります。たとえば、次のことが必要な場合があります。'Buy'
'Sell'
None
def b(self):
order = self.a()
if order == 'Buy':
return 'BUY SET'
elif order == 'Sell':
return 'SELL SET'
else:
raise ValueError("Unexpected order type '{}'".format(order))
または多分:
def b(self):
order = self.a()
if order == 'Buy':
return 'BUY SET'
else: # We know there's nothing else it could be
return 'SELL SET'
2 つ以上の可能性がある場合は、 /チェーンを使用するか、動的コードを記述するdict
代わりに、物事を に入れる価値があるかもしれません。例:if
elif
def b(self):
return {'Buy': 'BUY SET', 'Sell': 'SELL SET', 'Trade': 'TRADE SET',
'Barter': 'BARTER SET', 'Steal': 'STEAL SET'}[self.a()]
def b(self):
return '{} SET'.format(order.upper())
これらは前の質問に対して異なる選択をすることに注意してください。dict
バージョンは、不明な値に対して aをKeyError
発生させます。バージョンはformat
何でも有効なものとして扱います。
また、 a を使用する場合はdict
、おそらくそれをb
関数の外に移動する必要があります。たとえば、クラス属性にします (これにより、適切な名前を付けることが推奨されます)。
ただし、選択肢が 2 つだけの場合は、あなたが持っているものの方がはるかに明確だと思います。
最後に、関数に意味のない 1 文字の名前を付けるのはあまり Pythonic ではありません。次のようにしたほうがよいでしょう。
def get_formatted_order(self):
order = self.calculate_order()
if order == 'Buy':
return 'BUY SET'
elif order == 'Sell':
return 'SELL SET''