2017-05-11 27 views
1

内メソッドを呼び出すことができません:私はxyzでそれを初期化します私はこのようになりますクラス持ってスケジュールジョブ

class Account(object): 
    """A simple bank account""" 

    def __init__(self, balance=0.0): 
     """ 
     Return an account object with a starting balance of *balance*. 
     """ 
     self.balance = balance 

    def withdraw(self, amount): 
     """ 
     Return the balance remaining after withdrawing *amount* dollars. 
     """ 
     self.balance -= amount 
     return self.balance 

    def deposit(self, amount): 
     """ 
     Return the amount remaining after depositing *amount* dollars. 
     """ 
     self.balance += amount 
     return self.balance 

を:

xyz = Account(balance=6000) 
xyz.balance 
> 6000 

を私はまた、ダム印刷機能を持っています:私は私のscheduledepositメソッドを呼び出そう

def thing(): 
    print("I am doing a thing...") 

フロー:

import schedule 

# this works 
# schedule.every(5).seconds.do(thing) 

# this doesn't work 
schedule.every(5).seconds.do(xyz.deposit(2300)) 

while True: 
    schedule.run_pending() 

私は次のエラーを取得:

TypeError: the first argument must be callable

任意のアイデア?スケジュールフロー内のメソッドを呼び出すことも可能ですか?

答えて

2

scheduleには慣れていませんが、do()wantsというように、呼び出し可能な、つまりメソッドです。メソッドxyz.depositと引数2300ではなく、戻り値にxyz.deposit(2300)を指定しています。試してみてください:

schedule.every(5).seconds.do(xyz.deposit, 2300) 
+0

素晴らしいです。ありがとう!私は、入力変数を持たないメソッドに対してこれを動作させることはできませんでした...私は属性にアクセスしようとしていると考えています。思考? – emehex

+1

私は最小限の例を試してみました。あなたがやっていることを正確に投稿してください。 – jpkotta

+0

私の方法で '自己'を忘れてしまった。そうでなければ動作します。確認していただきありがとうございます。 – emehex

関連する問題