Tôi sẽ sử dụng Python function annotations để chỉ định loại giá trị trả về của một phương pháp nhà máy tĩnh. Tôi hiểu điều này là one of the desired use cases cho chú thích.Tại sao tên của lớp chứa không được nhận dạng là chú thích hàm trả về giá trị?
class Trie:
@staticmethod
def from_mapping(mapping) -> Trie:
# docstrings and initialization ommitted
trie = Trie()
return trie
PEP 3107 khẳng định rằng:
Chức năng chú thích là gì khác hơn là một cách để kết hợp biểu Python tùy ý với các bộ phận khác nhau của một hàm tại thời gian biên dịch.
Trie
là một biểu thức hợp lệ trong Python, phải không? Python không đồng ý hay đúng hơn, không thể tìm thấy tên:
def from_mapping(mapping) -> Trie:
NameError: name 'Trie' is not defined
Nó đáng chú ý rằng lỗi này không xảy ra nếu một loại cơ bản (như object
hoặc int
) hoặc loại thư viện chuẩn (chẳng hạn như collections.deque
) được chỉ định.
Điều gì gây ra lỗi này và cách khắc phục?
trùng lặp có thể xảy ra của [Làm thế nào để xác định rằng các kiểu trả về của một phương pháp tương tự như lớp chính nó trong python?] (https://stackoverflow.com/questions/33533148/how-do-i-specify-that-the-return-type-of-a-method-is-the-same-as-the- class-itsel) –