Tôi thực sự thích sử dụng docstrings trong Python để chỉ định tham số kiểu khi dự án vượt quá một kích thước nhất định.Làm thế nào để xác định rằng một tham số là danh sách các đối tượng cụ thể trong tài liệu Python
Tôi đang gặp khó khăn khi tìm tiêu chuẩn để sử dụng để chỉ định rằng tham số là danh sách các đối tượng cụ thể, ví dụ: trong các loại Haskell tôi muốn sử dụng [String] hoặc [A].
tiêu chuẩn hiện hành (dễ nhận biết bởi biên tập PyCharm):
def stringify(listOfObjects):
"""
:type listOfObjects: list
"""
return ", ".join(map(str, listOfObjects))
Những gì tôi muốn:
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))
Tôi cho rằng đó không phải là một ví dụ tuyệt vời - trường hợp sử dụng phù hợp hơn sẽ là trường hợp các đối tượng trong danh sách phải thuộc một loại cụ thể.
ví dụ tốt hơn
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
Vì vậy, khác với thực tế là tôi nhận được đói, ví dụ này minh họa rằng nếu gọi với một danh sách các loại sai đối tượng, mã sẽ phá vỡ. Do đó tầm quan trọng của tài liệu không chỉ là nó cần một danh sách, nhưng nó cần một danh sách các thực phẩm.
CÂU HỎI LIÊN QUAN How can I tell PyCharm what type a parameter is expected to be? Xin lưu ý rằng tôi đang tìm kiếm một câu trả lời cụ thể hơn so với cái trên.
Bạn đã kiểm tra PEP trên trang web python chưa? – Jiminion
Tôi đã không tìm thấy một cho điều này, nhưng tôi có thể đã bỏ lỡ nó – Alex
Có thể trùng lặp của http://stackoverflow.com/questions/24853923/python-3-annotations-type-hinting-a-list-of-a- quy định-loại-pycharm (nơi tôi đã học về mô-đun 'gõ' của Python 3.5). – Noumenon