Trong python 3 Tôi có thể tạo đối số và trả về các chú thích kiểu. Ví dụ:đặt lớp hiện tại làm chú thích kiểu trả về
class Graph:
def __init__(self, V: int, E: int, edges: list):
pass
@classmethod
def fromfile(cls, readobj: type(sys.stdin)):
pass
def V(self) -> int:
pass
def E(self) -> int:
pass
Vấn đề là tôi không thể tạo chú thích với kiểu trả về của lớp hiện tại (Đồ thị) chưa được xác định. Ví dụ:
class Graph:
def reverse(self) -> Graph:
pass
Mã này đi với lỗi
def reverse(self) -> Graph:
NameError: name 'Graph' is not defined
Những chú thích này là thực sự hữu ích cho cả tài liệu và cho phép các IDE để nhận ra lý lẽ và kiểu trả về => enable autocomplete
UPD: Vì vậy, những gì tôi đưa ra là điều này hoặc là không thể hoặc yêu cầu một số hacks tôi không thích, vì vậy tôi quyết định sử dụng chỉ def reverse (self) -> 'Graph':
đó là dễ hiểu cho documenta mặc dù phá vỡ quy tắc. Nhược điểm là nó không hoạt động cho IDE autocomplete.
Bạn đã thử: 'def reverse (self) -> type (self)' – Ankur
có thể trùng lặp của [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ị?] (Http: // stackoverflow. com/questions/15741887/why-is-the-name-of-the-contains-class-not-recogn-as-a-return-value-functio) – eryksun
Bản sao có thể có của [Làm cách nào để xác định loại trả về một phương thức giống như chính lớp đó trong python?] (https://stackoverflow.com/questions/33533148/how-do-i-specify-that-the-return-type-of-a-method-is- –