-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 に答える