0

Pythonでのクラスのインスタンス化について質問があります。そのため、同じディレクトリにさまざまなタイプのデータが多数保存されており、そのタイプにのみ適したpythonクラスを使用して、そのうちの1つのタイプのみを処理したいと考えています。残念ながら、データの型は、クラスを介して読み込まれたときにのみわかります。__init__()データ型が正しくない場合にクラスのインスタンス化を単純に停止し、すべてのデータを読み取るときに次のデータセットに渡すだけの方法があるのだろうか? それとも、クラスのインスタンス化で検証するのは悪い考えですか?

どうもありがとう!

4

2 に答える 2

0

次のようなことができます。

class MyClass(object):
    def __init__(self,data):
        if type(data) is int:  #In this example we don't want an int, we want anything else
            pass
        else:
            #do stuff here

次に、次のように使用します。

MyClass('This is ok')

また

MyClass(92) #This is not ok
于 2012-10-31T01:24:12.583 に答える
0

これを行う正しい方法は、クラスに渡されたデータが間違った型である場合にエラーを発生させることです。

class MyClass(object):
    def __init__(self, data):
        if not isinstance(data, correct_type):
            raise TypeError("data argument must be of type X")

次に、インスタンス化を try except 句でラップします。

try:
    myInstance = MyClass(questionable_data)

except TypeError:
    #data is not the correct type. "pass" or handle in an alternative way. 

これは、データが特定のタイプである必要があるという事実を明示的に明らかにするため、有利です。

別のオプションは、sberryが言ったように実行し、クラスをインスタンス化する前にデータ型を明示的にテストすることです:

if isinstance(data, correct_type):
    myInstance = MyClass(data)
else:
    #data is not the correct type. "pass" or handle in an alternative way. 
于 2012-10-31T01:37:00.317 に答える