0

通話時に時間を表示したいのですdate.now.hourが、このエラーが発生します

AttributeError: 'function' object has no attribute 'hour'

これは私のコードです:

#!/usr/bin/python

class Date:
    def now(self):
        self.hour = "hour"
        print "Now"
    
    def __call__(self, string):
        print string    
    
date = Date()
date('hello') # print hello
date.now.hour # print hour

私の仕事は

これを実行できるクラスを作成します。

date.now()- 出力:'now'

date('hai')- 出力:'hai'

date.now出力:'now'

date.now.hour出力:'hour'

4

5 に答える 5

5

呼び出すだけです。関数の属性はオブジェクトの属性であるため、関数date.now()の属性にアクセスすることはできません。hour

することで見えるdate.hourようになりますhour

>>> date.hour
'hour'

__init__ただし、これらすべてのプロパティをクラスの関数に設定する必要があります。

class Date():
    def __init__(self, hour):
        self.hour = hour

    def now(self):
       print self.hour #if you will

    def __call__(self string):
       print string
于 2013-07-19T12:04:25.547 に答える
2

あなたはかなり近づいています - あなたのタスクの1つはすでに完了しています:

date('hai')-output: 'hai'

まだやるべきことは

date.now()- 出力:'now'

date.now- 出力:'now'

date.now.hour出力:'hour'

したがってdate.now、別のクラスでのみ達成できる非常に多くの要件があります。

class Now(object):
    def __str__(self): return ...
    def __call__(self): return ...
    hour = property(lambda self: 'hour')
    

またはこのようなもの。

このクラスは、 内で使用できますclass Date


別のオプションはnow、あなたの のプロパティにすることclass Dateですが、これは同様に機能します。上記のようなものが必要ですが、次のclass Nowように使用します

class Date(object):
    def __call__ # as before
    @property
    def now(self):
        return Now()
于 2013-07-19T12:32:25.793 に答える
2

now関数はクラスに属性を設定していますhour。次のようにすると、時間が出力されます。

date = Date()
date.now()
date.hour
于 2013-07-19T12:04:40.980 に答える
2

nowDateはクラスのメソッドでhourあり、属性です:

date = Date()
date('hello') # print hello
date.now() # print Now
print date.hour # print hour
于 2013-07-19T12:04:54.403 に答える