2012-06-15 22 views
1

可以說我有以下包層次:Perl的對象體系內省

A--> B --> C --> D 

這意味着A是基類,並從它B繼承反過來從乙C繼承等。

也可以說我有下面的代碼行:

my $co = D->new(); 

有沒有什麼辦法來檢查(一些UNIVERSAL方法?)如果對象co是爲A的後裔? (或者一般來說,爲了測試對象X是否是包P的後代)

回答

5

請參閱UNIVERSAL

if ($D->isa('A')) {print "do something fancy"} 

if ($D->can('method_defined_in_A')) {print "can do that";} 
+1

+1提'can'。使用'isa'通常意味着你做錯了什麼。 – ikegami