-1

これが私のTransactionクラスです:

class Transaction(object):
    def __init__(self, company, price, date):
        self.company = company
        self.price = price
        self.date = date
    def company(self):
        return self.company
    def price(self):
        return self.price
    def date(self):
        self.date = datetime.strptime(self.date, "%y-%m-%d")
        return self.date

そして、date関数を実行しようとしているとき:

tr = Transaction('AAPL', 600, '2013-10-25')
print tr.date()

次のエラーが表示されます。

Traceback (most recent call last):
  File "/home/me/Documents/folder/file.py", line 597, in <module>
    print tr.date()
TypeError: 'str' object is not callable

どうすれば修正できますか?

4

2 に答える 2

2

ではself.date = dateself.datehere は実際にはメソッドを隠しているdef date(self)ため、属性またはメソッド名のいずれかを変更することを検討する必要があります。

print Transaction.date  # prints <unbound method Transaction.date>
tr = Transaction('AAPL', 600, '2013-10-25') #call to __init__ hides the method 
print tr.date           # prints 2013-10-25, hence the error.

修理:

    def convert_date(self):  #method name changed
        self.date = datetime.strptime(self.date, "%Y-%m-%d") # It's 'Y' not 'y'
        return self.date

tr = Transaction('AAPL', 600, '2013-10-25')
print tr.convert_date()     

出力:

2013-10-25 00:00:00
于 2013-10-20T16:18:22.587 に答える
1

インスタンス変数 ( ) と同じ名前self.dateのメソッドがあります。def date(self):インスタンスの構築時に、前者が後者を上書きします。

def get_date(self):メソッドの名前を変更するか ( )、プロパティを使用することを検討してください。

于 2013-10-20T16:18:43.423 に答える