2012-11-23 41 views
9

Tôi mới sử dụng Python. Tôi đã quen thuộc với Java, C/C++ và OCaml. Tôi hiểu Lambda Calculus và Lý thuyết Loại tiểu học vì một khóa học Ngôn ngữ lập trình tôi học tại Đại học.Hệ thống kiểu Python - Đối tượng vs Loại

vũ trang với bối cảnh này, tôi đã cố gắng để đọc - http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html

Một nơi nào đó xuống, ông đề cập đến điều này:

  • (gõ 'đối tượng') là một thể hiện của (loại 'loại')
  • (loại 'đối tượng') là một phân lớp không có đối tượng.
  • (loại 'loại') là một ví dụ của chính nó.
  • (type'type ') là một lớp con của (loại 'đối tượng')

Tôi không thể quấn não nghèo của tôi xung quanh này:

  • (gõ 'đối tượng') là một thể hiện của (loại 'loại')
  • (loại 'loại') là một lớp con của (loại 'đối tượng')

gì bleep đang xảy ra ở đây? Những gì tôi muốn nghe là những lý do cực kỳ sâu sắc về những gì chính xác đang xảy ra ở đây, và tại sao mọi thứ lại như vậy. Không có lý do nông cạn hoặc tương tự xin vui lòng.

Trả lời

4

Nó đang nói cụ thể về đối tượng type. Đối với type, tất cả các loại được kế thừa từ <type 'type'>.

Tôi tin rằng tuyên bố khác chỉ là chỉ ra rằng <type 'type'>object; một ví dụ mà tôi nghĩ từ việc nhìn xa hơn xuống:

t = list.__class__ # <type 'type'> 
t.__bases__ # (<type 'object'>,) 
0

Vì khái niệm kiểu giống với lớp bạn có thể phân lớp với kỹ thuật hướng đối tượng bình thường và cú pháp lớp để tùy chỉnh nó.

Và vì các lớp thực sự là trường hợp của lớp loại, việc tạo các lớp từ các lớp con tùy chỉnh cho phép triển khai các loại lớp tùy chỉnh.

Trong các lớp học kiểu mới:

  • loại là một lớp mà tạo ra lớp người dùng định nghĩa.
  • Metaclasses là các lớp con của lớp loại.
  • Đối tượng lớp là trường hợp của loại loại hoặc phân lớp của chúng.
  • Đối tượng thể hiện được tạo từ một lớp.
Các vấn đề liên quan