首先,我知道Python中的類的__init__()
函數無法返回值,所以很遺憾,此選項不可用。Python __init__返回失敗創建
由於我的代碼的結構,在類的__init__
函數內部有數據斷言(並提示用戶提供信息)是有意義的。但是,這意味着對象的創建可能會失敗,並且我希望能夠從中正常恢復。
我想知道繼續這個最好的方法是什麼。我曾考慮將全局布爾值設置爲「有效構造」標誌,但我不想。
任何其他想法(除了重構,所以斷言可能發生在初始化之外,值作爲參數傳遞)?我基本上正在尋找一種方法來成功返回0,並在初始化期間返回-1。 (像大多數C系統調用一樣)
引發異常。 – 2013-06-27 01:07:17
成功時返回0,失敗時返回-1非常不Pythonic。錯誤返回是不好的,因爲它們很容易被忽略,並且處理冗長。最重要的是,使用0和-1作爲布爾值只會增加混淆而沒有任何好處。不要錯過使用Python編寫C代碼。 – abarnert
正如@jsbueno在他的回答中指出的,類實例在__init __()中是_initialized_,而不是創建的,這就是爲什麼它不返回值。你可以添加一個數據成員到你的類來指示它的狀態,然後直接檢查它的值或調用一個方法,它在'__init __()'之後返回它的值,而不是使用全局變量來檢測失敗或拋出異常。被調用以確定是否有任何錯誤(可能是什麼)。 – martineau