ทุกอย่างใน Python เป็นวัตถุรวมถึงคลาส คลาสทั้งหมดเป็นอินสแตนซ์ของคลาสที่เรียกว่า "ประเภท" วัตถุประเภทยังเป็นอินสแตนซ์ของคลาสประเภทอีกด้วย คุณสามารถตรวจสอบลำดับชั้นการสืบทอดของคลาสโดยตรวจสอบแอตทริบิวต์ __bases__ ของคลาสอ็อบเจ็กต์ type() วิธีการส่งกลับประเภทคลาสของอาร์กิวเมนต์ (วัตถุ) ที่ส่งผ่านเป็นพารามิเตอร์ หากประเภทอาร์กิวเมนต์เดี่ยว (obj) ถูกส่งผ่านไปยังวิธีการพิมพ์ จะส่งคืนประเภทของวัตถุที่กำหนด หากส่งผ่านประเภทอาร์กิวเมนต์สามประเภท (ชื่อ ฐาน dict) จะส่งกลับวัตถุประเภทใหม่
การใช้ type()
มาดูคลาสสำหรับประเภทข้อมูลที่ใช้มากที่สุดกัน ในโปรแกรมด้านล่าง เราเริ่มต้นตัวแปรบางตัวแล้วใช้ type() เพื่อตรวจสอบคลาสของตัวแปรเหล่านั้น
ตัวอย่าง
# Some variables a = 5 b = 5.2 c = 'hello' A = [1,4,7] B = {'k1':'Sun','K2':"Mon",'K3':'Tue'} C = ('Sky','Blue','Vast') print(type(a)) print(type(b)) print(type(c)) print(type(A)) print(type(B)) print(type(C))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
<class 'int'> <class 'float'> <class 'str'> <class 'list'> <class 'dict'> <class 'tuple'>
ประเภทของชั้นเรียน
หากเราเจาะลึกลงไปเพื่อดูประเภทของคลาสข้างต้น เราจะเห็นว่าคลาสทั้งหมดเป็นของคลาสที่ชื่อว่า 'type'
ตัวอย่าง
print(type(int)) print(type(dict)) print(type(list)) print(type(type))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
<class 'type'> <class 'type'> <class 'type'> <class 'type'>
การสร้างประเภทวัตถุใหม่
เรายังสามารถใช้แนวทางที่คล้ายคลึงกันเพื่อสร้างวัตถุใหม่ ที่นี่เราส่งพารามิเตอร์สามตัวเพื่อสร้างวัตถุประเภทใหม่
ตัวอย่าง
Object1 = type('A', (object,), dict(a='Hello', b=5)) print(type(Object1)) print(vars(Object1)) class NewCalss: a = 'Good day!' b = 7 Object2 = type('B', (NewCalss,), dict(a='Hello', b=5)) print(type(Object2)) print(vars(Object2))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
<class 'type'> {'a': 'Hello', 'b': 5, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None} <class 'type'> {'a': 'Hello', 'b': 5, '__module__': '__main__', '__doc__': None}