2017-09-04 14 views
-3

上の関数を呼び出す私は、Pythonで初心者ですし、以下のコードを書いた:私の質問があるパイソン

from Main_Package.__init__ import webdriver 
browser = webdriver.Firefox() 

class provisioning: 
    def login(self): 
     browser.get('http://www.yahoo.com') 

provisioning.login() 

を:唯一の事が起こる、この関数を呼び出すことで、ブラウザを開いたがなしているということですなぜ 与えられたURL - もし私が関数とクラスなしで書いているなら - すべて正常に動作します。

+0

provisioning.loginを注意深く見てください。これはクラスメソッドではありません。プロビジョニングの種類のオブジェクトを作成し、その上でログインを呼び出す必要があります。 – gabhijit

答えて

0

あなただけの外にそれを取る、クラス内の関数を囲むされています

from Main_Package.__init__ import webdriver 

browser = webdriver.Firefox() 

def login(): 
    browser.get('http://www.yahoo.com') 

login() 

をとにかく、あなたはまだクラス内でそれを使用したい場合は、あなたが最初にそのインスタンスを作成する必要があります。

provisioning().login() 

それともstaticmethod作る:個人的に

class provisioning: 
    @staticmethod 
    def login(self): 
     browser.get('http://www.yahoo.com') 

provisioning.login() 

、私はでしょうドライバthrougパラメータを関数に渡して、それを操作してください。

browser = webdriver.Firefox() 

def login(web_broswer): 
    web_broswer.get('http://www.yahoo.com') 

login(browser) 
+1

以下完全に働いた:クラスのプロビジョニング: @staticmethod デフログイン(自己): browser.get( 'http://www.yahoo.com') provisioning.loginを() –

0

クラスをインスタンス化するために、あなたはそれはコンストラクターズ呼び出す必要があります:

class Provisioning: 
    ... 

provisioning = Provisioning() 
provisioning.login() 

パッケージオブジェクトをインポートするには、あなたが書く必要があります:

from main_package import browser 

注:あなたは尊重しなければなりませんPEP8命名規則。

1

は、クラスのプロビジョニングのinstanceを作成し、

provisioning = Provisioning() 
provisioning.login() 
それを呼び出すだけで、この provisioning = Provisioning()

0

を追加し、私は少し長くここに答える与えるだろう。私は、コードの構造が理想的であるかどうかわかりませんが、私はあなたがやろうとしているかを正確に知りませんよう、当分の間、一人でいることを残して -

class provisioning(): 
    def login(self): # This method is defined on the object of class provisioning. 
     browser.get("http://www.yahoo.com") 

これに対処するためのより良い方法でしょうこと -

(エラーハンドリングがあまりなく)myclass.pyでは言う - myclass_driver.pyで

class Privisioner: 
    def __init__(self, browser): 
     self.browser = browser 

    def login(self, url): 
     self.brwoser.get(url) 

(例えば) -

from myclass import Provisioner 
from Main_Package import webdriver # (no need for explicit MainPackage.__init_) 

browser = webdriver.Firefox() 
provisioning_object = Provisioner(browser=browser) 
provisioning_object.login(url="http://www.yahoo.com") 

「ログイン」方法を@classmethodにするオプションがあります。デコレータを使用すべきかどうかは、the documentationをお読みください。今は複雑すぎると思うので、上記の行に沿ってもっと単純なものがうまくいくはずです。