私はPython &セレンのwebdriverのいくつかのコードを書いています。私はエラーが発生しました:Python私は本当に各関数のグローバル割り当てを行う必要があります
UnboundLocalError: local variable XXX referenced before assignment
私はそのオブジェクトが最初に初期化されたmain関数でグローバル割り当てを行っていました。いくつかの研究をした後、私はグローバル変数を関数に代入するという解決策を得ました。私は関数の1つでグローバル割り当てを行った後、別の関数でエラーが発生しました。
私の質問は本当に各関数またはそのグローバル変数の最初の代入でグローバル代入を割り当てる必要がありますか?グローバル割り当ては必須ですclickLink(グローバル割り当てた後
今class sample:
driver = None
def dclose():
driver.close()
sys.exit(0)
def clickLink():
try:
driver.find_element_by_link_text('about').click()
except:
print "Error: link not found"
def main():
global driver
driver = webBase.Driver(URL) # another class where i have initalised webdriver with some logger activity.
clickLink()
dclose()
)
class sample:
driver = None
def dclose():
global driver # does it require #1
driver.close()
sys.exit(0)
def clickLink():
global driver # does it require #2
try:
driver.find_element_by_link_text('about').click()
except:
print "Error: link not found"
def main():
global driver # does it require #3
driver = webBase.Driver(URL) # another class where i have initalised webdriver with some logger activity.
clickLink()
dclose()
:
サンプルコード、私はエラーを得ましたか?
各機能は不満:ドライバーはサンプルクラスをインスタンス化する際に、引数として渡される必要があり、その場合には、低カップリングを達成するために
、この実装が優れています、 'driver'をグローバルと宣言して、あなたはどちらが必要なのか不明です。 –
私はいくつかの要素を検出し、いくつかのデータベース活動を行うために私のプログラムに8つの関数を持っています。私は各機能のグローバル割り当てを宣言することで問題を解決しました。しかし、私の質問は「これは正当なものか、あるいは私がやったことはちょうどハックなのか」ということです。 –
それがあなたの質問だったら、実際の質問を入れるのは良いことでした。 –