プロジェクトが特定のサイズを超えたときに、Pythonでdocstringを使用して型パラメータを指定するのは本当に好きです。パラメータがPython docstringの特定のオブジェクトのリストであることを指定する方法
パラメータが特定のオブジェクトのリストであることを指定するための標準を見つけることができません。 Haskell型では[String]または[A]を使用します。
(PyCharmエディタにより認識)現在の標準:私が好む何
def stringify(listOfObjects):
"""
:type listOfObjects: list
"""
return ", ".join(map(str, listOfObjects))
:
OPTION 1
def stringify(listOfObjects):
"""
:type listOfObjects: list<Object>
"""
return ", ".join(map(str, listOfObjects))
OPTION 2
def stringify(listOfObjects):
"""
:type listOfObjects: [Object]
"""
return ", ".join(map(str, listOfObjects))
私はそれが素晴らしい例ではないと考えています。より関連するユースケースは、リスト内のオブジェクトが特定のタイプでなければならないケースです。私は空腹取得していたという事実以外の
BETTER例だから、
class Food(Object):
def __init__(self, calories):
self.calories = calories
class Apple(Food):
def __init__(self):
super(self, 200)
class Person(Object):
energy = 0
def eat(foods):
"""
:type foods: [Food] # is NOT recognised by editor
"""
for food in foods:
energy += food.calories
、この例では、オブジェクトの間違った種類のリストとともに呼び出された場合、コードが壊れることを示しています。したがって、それがリストを必要とするだけでなく、それは食品のリストを必要とすることを文書化することの重要性。
関連する質問 How can I tell PyCharm what type a parameter is expected to be? 私は上記の1以上の具体的な答えを探していますのでご注意ください。
あなたもintのリストに文字列を追加することができるのpythontype([1,2,3]) == type(['a', 'b', 'c'])
で
pythonのWebサイトでPEPをチェックしましたか? – Jiminion
私はこれについて見つけませんでしたが、私はそれを逃したかもしれません – Alex
可能な複製http://stackoverflow.com/questions/24853923/python-3-annotations-type-hinting-a-list-of-a-指定されたタイプのpycharm(ここで私はPython 3.5の 'typing'モジュールについて学びました)。 – Noumenon