0

例外がキャッチされた場合、Pythonオブジェクトの初期化を防ぐことは可能__init__ですか?

class pwm():

    def __init__(self):
        try:
            wiring_pi = cdll.LoadLibrary('/home/lib.so')
        except:
            print "Problem with loading the library:", sys.exc_info()
            #DON'T CREATE THE OBJECT, FOR IT IS USELES WITHOUT lib.so
4

3 に答える 3

2

__init__確かに、から例外を発生させることができます。次に、呼び出し元に例外が表示されます。厳密に言えば、オブジェクトは作成されていますが、オブジェクトへの参照がないため、例外がスローされたときに再利用されます。

exceptサンプルコードでは、句を完全に省略するか、句から例外を発生させます。

于 2013-03-21T12:44:18.200 に答える
2

__new__そこにdllをオーバーライドしてロードします。super().__new__(...)失敗した場合は、 inを呼び出す前に例外を発生させ__new__ます。

于 2013-03-21T12:45:54.553 に答える
0

initで実行をキャッチし、Noneなどを返す静的メソッドを使用できます...

class AesSedai(object):
    def __init__(name="Moiraine"):
        wiring_pi = cdll.LoadLibrary('/home/lib.so')
    @staticmethod
    def create_wizard(cls,*args, **kwargs):
        try:
            wiring_pi = cdll.LoadLibrary('/home/lib.so')
            return cls(*args, **kwargs)
        except:
            print "Problem with loading the library:", sys.exc_info()
            return 
于 2013-03-21T13:29:24.860 に答える