0
これは私が書いたコードスニペットで、if条件ラダーのためにPythonicではないと考えています。このコードをもっとpythonicに最適化するにはどうすればよいですか?
このコードは、バックエンド処理のために使用されているカスタムクラスのものであり、
def _get_item(self, **kwargs):
""" returns an object if object exists else None"""
return self.model.objects.get_object_or_none(**kwargs)
def get_object(self, info=None):
""" gets an object with given info """
if info:
self._validate_info(info=info)
name = self._info.get('name', '')
slug = self._info.get('slug', '')
if slug:
obj = self._get_item(slug=slug)
elif name:
obj = self._get_item(name=name)
else:
obj = self._get_item(name=name, slug=slug)
if obj:
return obj
は、ここで私はget_object()
方法を最適化する必要があります。 ._validate_info()
は、基本的にself._info
に必要な値をチェックして格納し、後で.get()
メソッドで取得した辞書であるinfo
を検証します。
どのように私はこのコードをPythonicと少なく混乱させるのですか?もう少し説明するために
def get_object(self, info=None):
self._validate_info(info)
return self._get_item(**self._info)
:self._info
のみname
とslug
データが含まれ、あなたのような何かを書くことができると仮定すると
[コードレビュー](http://codereview.stackexchange.com)に関するより良い質問。 (1)関数が '' if info''を上に使用する場合、 '' info''を '' None''にすることは可能ですか? (2)Pythonでは、 'infoがNoneでないならば:' 'if info:'ではありません。 (3) 'スラグとエリフ名が奇妙に見えたら'; 'self._info'には1つだけ存在しますか? (4) 'obj'を返すだけで、' if obj'は現在重複しています。 – ChrisP
私はあなたに[this](http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch15s09.html)をチェックすることを勧めます。 – MikeVelazco
これがCode Reviewに掲載されていれば、そのコードが何であるかが尋ねられます実際には、言い換えれば、文脈で行う。 – Phrancis