Có sự khác biệt giữa
class A:
...
và
class A():
...
Tôi chỉ nhận ra rằng một vài lớp của tôi được định nghĩa là lớp cũ và chúng hoạt động tốt. Dấu ngoặc trống có tạo ra sự khác biệt nào không?
Câu trả lời:
Sau đó là lỗi cú pháp trên các phiên bản Python cũ hơn. Trong Python 2.x, bạn nên lấy từ object
bất cứ khi nào có thể, vì một số tính năng hữu ích chỉ có sẵn với các lớp kiểu mới (lấy từ object
là tùy chọn trong Python 3.x, vì các lớp kiểu mới là mặc định ở đó).
class A()
bao giờ lỗi cú pháp không? Tài liệu Python 1.4 nói rằng nó ổn và đó là những tài liệu lâu đời nhất vẫn có trên python.org.
Mặc dù việc sử dụng dấu ngoặc trống trong định nghĩa lớp có thể không chính xác về mặt cú pháp, nhưng dấu ngoặc đơn sau định nghĩa lớp được sử dụng để biểu thị kế thừa, ví dụ:
class A(baseClass):
...
Trong Python, cú pháp ưu tiên cho khai báo lớp mà không có bất kỳ lớp cơ sở nào chỉ đơn giản là:
class A:
...
Không sử dụng dấu ngoặc đơn trừ khi bạn đang phân lớp các lớp khác.
Các tài liệu về vấn đề này sẽ giúp bạn hiểu rõ hơn về cách khai báo và sử dụng các lớp trong Python.
object
những điều vô nghĩa sẽ được tự động giải quyết.