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

ตรวจสอบว่า class หนึ่งเป็น subclass ของอีก class ใน Python


ภาพรวม

ใช้ numpy.issubclass_() ตรวจสอบว่า class แรกเป็น subclass ของ class ที่สอง คล้าย built-in issubclass() แต่คืน False แทนที่จะ raise TypeError ถ้า argument ไม่ใช่ class

พารามิเตอร์

  • arg1: class ต้นทาง (True ถ้าเป็น subclass ของ arg2)
  • arg2: class เป้าหมาย หรือ tuple ของ classes

ขั้นตอนการทำงาน

1. นำเข้า NumPy

import numpy as np

2. ทดสอบ issubclass_() กรณีต่างๆ

print("Result...", np.issubclass_(np.float16, np.float32))
print("Result...", np.issubclass_(np.int32, np.signedinteger))
print("Result...", np.issubclass_('i4', np.signedinteger))
print("Result...", np.issubclass_(np.int64, int))
print("Result...", np.issubclass_(np.float64, float))
print("Result...", np.issubclass_('S8', str))
print("Result...", np.issubclass_(np.int16, float))
print("Result...", np.issubclass_(np.array([45, 89]), int))
print("Result...", np.issubclass_(np.int32, np.integer))

ตัวอย่างโค้ดเต็ม

import numpy as np
print("Using the issubclass_() method in Numpy\n")
print("Result...", np.issubclass_(np.float16, np.float32))
print("Result...", np.issubclass_(np.int32, np.signedinteger))
print("Result...", np.issubclass_('i4', np.signedinteger))
print("Result...", np.issubclass_(np.int64, int))
print("Result...", np.issubclass_(np.float64, float))
print("Result...", np.issubclass_('S8', str))
print("Result...", np.issubclass_(np.int16, float))
print("Result...", np.issubclass_(np.array([45, 89]), int))
print("Result...", np.issubclass_(np.int32, np.integer))

ผลลัพธ์

Using the issubclass_() method in Numpy
Result... False
Result... True
Result... False
Result... False
Result... True
Result... False
Result... False
Result... False
Result... True

คำอธิบาย:

  • float16 ไม่ใช่ subclass ของ float32
  • int32 เป็น subclass ของ signedinteger
  • 'i4' (dtype string) ไม่ใช่ class จึงเป็น False
  • int64 ไม่ใช่ subclass ของ built-in int
  • float64 เป็น subclass ของ built-in float
  • 'S8' ไม่ใช่ subclass ของ str
  • int16 ไม่ใช่ subclass ของ float
  • np.array(...) ไม่ใช่ class → False
  • int32 เป็น subclass ของ integer