检查对象的父类

Mar*_*ark 1 lisp inheritance common-lisp clos

我想知道一种方法,如何检查一个对象是否属于某个类,或从中派生出来.例如:

(defclass a nil
  nil)

(defclass b (a)
  nil)

(defparameter *foo* (make-instance 'b))

(my-function *foo* 'a) ; => t
(my-function *foo* 'b) ; => t
Run Code Online (Sandbox Code Playgroud)

或者,还将理解返回给定对象(或类)的所有基类的列表的函数.

Rai*_*wig 7

用途typep:

CL-USER 4 > (typep *foo* 'a)
T

CL-USER 5 > (typep *foo* 'b)
T
Run Code Online (Sandbox Code Playgroud)