我的任務是在我們的一個 Python 類中修改函式的行為。
我們的函式有幾個引數,一個是除錯標志。目前,如果未指定除錯標志,那么我們假設它為 False。我們需要它做的是當未指定除錯時,檢查呼叫代碼中的變數“除錯”并使用該值(如果存在)。
我會簡單地更改函式宣告中除錯引數的名稱,除了我們有很多使用該標志的遺留代碼。
這是在 Jupyter Lab 中,如果它有什么不同的話。
示例代碼:
class MyClass:
@classmethod
def fn(self, debug=None):
if debug is None:
try:
debug = parent.debug
except Exception as e:
print(e)
debug = "BAD"
return debug
debug = True
x = myClass
print( x.fn() )
我希望輸出為“True”,但最終結果為:
未定義全域名稱“父
級”
我正在嘗試做的事情可能嗎?如果是這樣,怎么做?
uj5u.com熱心網友回復:
改為使用globals()['debug']。
或將您的 fn() 方法替換為:
@classmethod
def fn(self, debug=None):
if debug is None:
debug = globals().get('debug', 'BAD')
return debug
uj5u.com熱心網友回復:
您訪問我們未在您的代碼中定義的變數 parent。
uj5u.com熱心網友回復:
首先,您代碼中的 MyClass 不是從任何其他類繼承的。從技術上講,該類沒有任何父類(默認情況下 obj 類除外),因此無法訪問像“parent.debug”這樣不存在的東西。其次,至于您的問題,我假設您想要訪問在類外部初始化的除錯變數,然后您可以通過執行以下操作輕松地做到這一點:
global debug
class MyClass:
@classmethod
def fn(self, debug=None):
if debug is None:
try:
debug = debugOut
except Exception as e:
print(e)
debug = "BAD"
return debug
debugOut = True
x = MyClass()
print(x.fn())
上面的代碼回傳 True
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476498.html
下一篇:獲取幾個變數的最頻繁值
