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

Python Type Object


ทุกอย่างใน Python เป็น Object รวมถึง Classes ทุก Class เป็น Instance ของ Class ที่เรียกว่า "type" Type Object เองก็เป็น Instance ของ Class type เช่นกัน คุณสามารถตรวจสอบลำดับชั้นการสืบทอดของ Class ได้โดยตรวจสอบแอตทริบิวต์ __bases__ ของ Object Class type() จะคืนค่าประเภท Class ของ Argument (Object) ที่ส่งเข้ามาเป็นพารามิเตอร์ หากส่ง Argument เดียว type(obj) จะคืนค่าประเภทของ Object นั้น หากส่ง 3 Arguments type(name, bases, dict) จะคืนค่า Type Object ใหม่

การใช้ type()

มาดู Class ของประเภทข้อมูลที่ใช้บ่อยที่สุดกัน ในโปรแกรมด้านล่าง เราเริ่มต้นตัวแปรบางตัว แล้วใช้ type() เพื่อตรวจสอบ Class ของพวกมัน

ตัวอย่าง

# 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'>

ประเภทของ Classes

ถ้าเราลงลึกดูประเภทของ Classes ข้างต้น เราจะเห็นว่าทั้งหมดเป็นของ Class ที่ชื่อว่า 'type'

ตัวอย่าง

print(type(int))
print(type(dict))
print(type(list))
print(type(type))

ผลลัพธ์

การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ −

<class 'type'> <class 'type'> <class 'type'> <class 'type'>

การสร้าง Object Type ใหม่

เราสามารถใช้แนวทางเดียวกันข้างต้นเพื่อสร้าง Object ใหม่ได้ โดยส่ง 3 พารามิเตอร์เพื่อสร้าง Type Object ใหม่

ตัวอย่าง

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__': , '__weakref__': , '__doc__': None} <class 'type'> {'a': 'Hello', 'b': 5, '__module__': '__main__', '__doc__': None}