2011-11-20 13 views
7

Giả sử tôi có một lớp X, làm cách nào để kiểm tra xem lớp/lớp cơ sở và lớp/lớp cơ sở của chúng, v.v.Làm cách nào để kiểm tra phân cấp lớp của Python?

Tôi đang sử dụng Eclipse với PyDev, và cho Java ví dụ bạn có thể gõ CTRL + T trên một tên lớp và xem hệ thống phân cấp, như:

 
java.lang.Object 
    java.lang.Number 
     java.lang.Integer 

Có thể cho Python?

Nếu không thể có trong Eclipse PyDev, tôi có thể tìm thông tin này ở đâu?

+2

này được trả lời trong [Python: Liệt kê tất cả các lớp cơ sở trong một hệ thống phân cấp] (http://stackoverflow.com/questions/1401661/python-list-all-base-classes-in-a-hierarchy) – kojiro

Trả lời

8

Nhấn f4 với tên lớp được đánh dấu để mở chế độ xem phân cấp.

2

Ngoài ra, mọi lớp mang theo một thuộc tính được gọi là __mro__ cung cấp tất cả các lớp cha mà từ đó một lớp nhất định có thể kế thừa các phương thức hoặc thuộc tính. Đọc chúng từ trái sang phải. Ví dụ:

assert bool.__mro__ == (<class 'bool'>, <class 'int'>, <class 'object'>) 
assert True.__class__.__mro__ == (<class 'bool'>, <class 'int'>, <class 'object'>) 
+0

Mỗi lớp (kiểu mới) đều có phương thức 'mro', vì vậy bạn có thể gọi' bool .mro() 'và' True .__ class __. mro() 'tương ứng (nó trả về danh sách thay vì tuple). – derenio