ทุกอย่างใน 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}