Cú pháp định nghĩa lớp Python


90

Có sự khác biệt giữa

class A:
    ...

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:


22

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ừ objectbấ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ừ objectlà tùy chọn trong Python 3.x, vì các lớp kiểu mới là mặc định ở đó).


7
Không còn đúng trong python 3; tất cả những gì bắt nguồn từ objectnhững điều vô nghĩa sẽ được tự động giải quyết.
temporary_user_name

4
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.
user2357112 hỗ trợ Monica

86

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.