Computer >> Máy Tính >  >> Lập trình >> Python

Sự khác biệt giữa các lớp kiểu cũ và lớp kiểu mới trong Python là gì?


Trong Python 2.x, có hai kiểu lớp tùy thuộc vào sự hiện diện hoặc vắng mặt của kiểu tích hợp làm lớp cơ sở -

"classic" style or old style classes have no built-in type as a base class:
>>> class OldSpam:      # no base class
...     pass
>>> OldSpam.__bases__
()

Các lớp kiểu "mới":chúng có kiểu tích hợp làm lớp cơ sở có nghĩa là, trực tiếp hoặc gián tiếp, chúng có đối tượng là lớp cơ sở -

>>> class NewSpam(object):           # directly inherit from object
...    pass
>>> NewSpam.__bases__
(<type 'object'>,)
>>> class IntSpam(int):              # indirectly inherit from object...
...    pass
>>> IntSpam.__bases__
(<type 'int'>,)
>>> IntSpam.__bases__[0].__bases__   # ... because int inherits from object
(<type 'object'>,)

Khi viết một lớp, người ta luôn muốn chuyển sang các lớp kiểu mới. Lợi ích của việc làm như vậy là rất nhiều, hãy liệt kê một số trong số đó -

Hỗ trợ cho bộ mô tả. Cụ thể, các cấu trúc sau đây có thể thực hiện được với bộ mô tả -

classmethod - Một phương thức nhận lớp dưới dạng đối số ngầm định thay vì đối tượng.

staticmethod - Một phương thức không nhận bản thân đối số ngầm làm đối số đầu tiên.

thuộc tính với thuộc tính:Tạo các chức năng để quản lý việc lấy, cài đặt và xóa một thuộc tính.

Python 3.x chỉ hỗ trợ ngầm định các lớp kiểu mới. Không cần phải đề cập đến đối tượng word trong ngoặc đơn trong khai báo lớp.