Hướng dẫn python create class with type - python tạo lớp với loại

Bởi Bernd Klein. Sửa đổi lần cuối: 01 tháng 2 năm 2022.Bernd Klein. Last modified: 01 Feb 2022.

Trên trang này

Đằng sau hậu trường: Mối quan hệ giữa lớp và loại

Trong chương này trong hướng dẫn của chúng tôi, chúng tôi sẽ cung cấp cho bạn cái nhìn sâu sắc hơn về phép thuật xảy ra đằng sau hậu trường, khi chúng tôi xác định một lớp hoặc tạo một thể hiện của một lớp. Bạn có thể tự hỏi mình: "Tôi có thực sự phải học các chi tiết bổ sung về lập trình hướng đối tượng trong Python không?" Rất có thể là không, hoặc bạn thuộc về một số ít người thiết kế các lớp học ở cấp độ rất tiên tiến.

Đầu tiên, chúng tôi sẽ tập trung vào mối quan hệ giữa loại và lớp. Trong khi xác định các lớp học cho đến nay, bạn có thể đã tự hỏi mình, những gì đang xảy ra "đằng sau dòng". Chúng tôi đã thấy rằng việc áp dụng "loại" cho một đối tượng trả về lớp mà đối tượng là một thể hiện của:

x = [4, 5, 9]
y = "Hello"
print(type(x), type(y))

OUTPUT:

<class 'list'> <class 'str'>

Nếu bạn áp dụng loại trên tên của một lớp, bạn sẽ trả về lớp "loại".

print(type(list), type(str))

OUTPUT:

<class 'type'> <class 'type'>

Điều này tương tự như áp dụng loại trên loại (x) và loại (y):

x = [4, 5, 9]
y = "Hello"
print(type(x), type(y))
print(type(type(x)), type(type(y)))

OUTPUT:

<class 'list'> <class 'str'>
<class 'type'> <class 'type'>

Một lớp do người dùng xác định (hoặc lớp "đối tượng") là một thể hiện của lớp "loại". Vì vậy, chúng ta có thể thấy, các lớp được tạo từ loại. Trong Python3 không có sự khác biệt giữa "lớp" và "loại". Chúng trong hầu hết các trường hợp được sử dụng làm từ đồng nghĩa.

Thực tế là các lớp là các trường hợp của một lớp "loại" cho phép chúng tôi lập trình các metaclasses. Chúng ta có thể tạo các lớp, kế thừa từ lớp "loại". Vì vậy, một metaclass là một lớp con của lớp "loại".

Thay vì chỉ một đối số, loại có thể được gọi với ba tham số:

Loại (ClassName, SuperClasses, Aperty_Dict)

Nếu loại được gọi với ba đối số, nó sẽ trả về một đối tượng loại mới. Điều này cung cấp cho chúng tôi một hình thức năng động của câu lệnh lớp.

  • "ClassName" là một chuỗi xác định tên lớp và trở thành thuộc tính tên;
  • "Siêu lớp" là một danh sách hoặc tuple với các siêu lớp của lớp chúng tôi. Danh sách hoặc tuple này sẽ trở thành thuộc tính cơ sở;
  • Các thuộc tính_DICT là một từ điển, hoạt động như không gian tên của lớp chúng tôi. Nó chứa các định nghĩa cho cơ thể lớp và nó trở thành thuộc tính dict.

Hướng dẫn python create class with type - python tạo lớp với loại

Chúng ta hãy xem một định nghĩa lớp đơn giản:

class A:
    pass

x = A()
print(type(x))

OUTPUT:

Chúng tôi cũng có thể sử dụng "Loại" cho xác định lớp trước đó:

A = type("A", (), {})
x = A()
print(type(x))

OUTPUT:

Nói chung, điều này có nghĩa là, chúng ta có thể định nghĩa một lớp A với

type(classname, superclasses, attributedict)

Khi chúng ta gọi "Loại", phương thức cuộc gọi của loại được gọi. Phương thức cuộc gọi chạy hai phương thức khác: mới và init:

type.__new__(typeclass, classname, superclasses, attributedict)
type.__init__(cls, classname, superclasses, attributedict)

Phương thức mới tạo và trả về đối tượng lớp mới và sau đó, phương thức INIT khởi tạo đối tượng mới được tạo.

<class 'list'> <class 'str'>
0

OUTPUT:

<class 'list'> <class 'str'>
1

Các định nghĩa lớp cho robot và robot2 hoàn toàn khác nhau về mặt cú pháp, nhưng chúng thực hiện một cách logic cùng một lớp.

Python thực sự làm gì trong ví dụ đầu tiên, tức là "cách thông thường" của việc xác định các lớp, là như sau: Python xử lý câu lệnh lớp hoàn chỉnh từ robot lớp để thu thập các phương thức và thuộc tính của robot để thêm chúng vào các thuộc tính của loại cuộc gọi loại . Vì vậy, Python sẽ gọi loại theo cách tương tự hoặc giống như chúng ta đã làm trong Robot2.

Đào tạo Python sống

Hướng dẫn python create class with type - python tạo lớp với loại

Các khóa học trực tuyến sắp tới

Ghi danh ở đây

Loại () trong python là gì?

Hàm loại () được sử dụng để có được loại đối tượng.Python loại () Syntax Syntax là: Loại (đối tượng) Loại (Tên, BASE, DIRT) Khi một đối số được chuyển đến hàm loại (), nó trả về loại đối tượng.Giá trị của nó giống như đối tượng.__Class__ biến thể hiện.used to get the type of an object. Python type() function syntax is: type(object) type(name, bases, dict) When a single argument is passed to the type() function, it returns the type of the object. Its value is the same as the object. __class__ instance variable.

Loại () trả về trong Python là gì?

Python loại () hàm loại () hoặc trả về loại đối tượng hoặc trả về một đối tượng loại mới dựa trên các đối số được truyền.either returns the type of the object or returns a new type object based on the arguments passed.

Có phải lớp học và giống nhau trong Python không?

Về cơ bản một loại là lớp kế thừa từ đối tượng.Trong Python3, tất cả các lớp kế thừa từ đối tượng, vì vậy chúng là giống nhau.they are the same thing.

Bạn có thể buộc các loại trong Python?

Mới trong phiên bản 3.5.Thời gian chạy Python không thực thi chức năng và chú thích loại biến.Chúng có thể được sử dụng bởi các công cụ của bên thứ ba như trình kiểm tra loại, IDE, linter, v.v.The Python runtime does not enforce function and variable type annotations. They can be used by third party tools such as type checkers, IDEs, linters, etc.