-1

我如何检查某物是子类还是类。比如说:

class Cat(object):
    def __init__(self,run,fast):
        """run is a list of speeds or something. But it can be from dogs or cats. Fast is a single number"""
        self.run=run
        self.fast=fast

class Dog(Class):
    def __init_(self,run, fast):
        Cat.__init__(self,run,fast)
        self.jumper=[]

    def update(self)
        for number in self.fast:
            if number is CATTYPE:
                self.jumper.append(number)
            if number is DOGTYPE:
                self.jumper.append(number)

基本上我正在尝试,在所有大写的地方,找到一种方法来使声明快速找到它是否是猫类型,然后附加到跳线。我知道这是一个愚蠢的例子,但我想知道当一个是另一个的子类时如何处理这个问题。

4

1 回答 1

2
>>> issubclass
<built-in function issubclass>
>>> class Foo: pass

>>> class Bar(Foo): pass

>>> issubclass(Foo, Bar)
False
>>> issubclass(Bar, Foo)
True
>>> isinstance(Bar(), Foo)
True

用于issubclass(B, C)检查 B 是否是 C 的子类。

用于isinstance(c, C)检查 c 是 C 的实例还是 C 的子类的实例。

对于您的问题:

if isinstance(animal_instance, Dog): 
    #instance of Dog

if isinstance(animal_instance, Cat):
    #instance of Cat

但是,从您模棱两可的来源看来,就像您正在尝试建立某种赛狗程序来跟踪“跳跃记录”并选择“快速跳跃者”。这让我们想知道您想如何检查实例类。

于 2013-04-12T20:26:09.233 回答