Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วัตถุประเภทหลาม


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