以下は、datetimeをサブクラス化するサンプルコードです。メソッドfromtimestampに引数tzを指定すると、datetimeのサブクラスがサブクラスのインスタンスでないのはなぜですか?
passは唯一のサブクラス本体であるため、datetimeのメソッド '__new__'は保持されることが期待されます。
次のコードは、Mac OS 10.12.3のPython 3.4.2とArch LinuxのPython 3.6.0でテストされています。どちらの場合も、同じ結果です。
質問は、 'b'が引数tzだけが異なるときにMyDatetimeのインスタンスではない場合、 'a'はなぜMyDatetimeのインスタンスですか?
フィードバックいただきありがとうございます。今の例で...
#!/usr/bin/env python3
from datetime import datetime
from datetime import timezone
class MyDatetime(datetime):
pass
if __name__ == '__main__':
dt = 1231798102
a = MyDatetime.fromtimestamp(dt)
b = MyDatetime.fromtimestamp(dt, tz=timezone.utc)
print('Why is isinstance(a, MyDatetime) == {}, while isinstance(b, MyDatetime) == {}?'.format(isinstance(a, MyDatetime), isinstance(b, MyDatetime)))
上記の例は次のように出力します。 '?なぜでisinstance(、MyDatetime)は、== trueの間はFalseでisinstance(B、MyDatetime)=='
ここでtype(a) == <class '__main__.MyDatetime'>
であり、type(b) == <class 'datetime.datetime'>
である。
はい、私は、ソースコードを見て、それにも見ました。その答えを拡大することで、datetimeをサブクラス化して、認識可能なdatetimeオブジェクトを取得することができますか?たとえばhttps://docs.python.org/3/library/datetime.html#datetime.datetimeに記載されています。 .utcfromtimestamp datetime.fromtimestamp(timestamp、timezone.utc)?または、新しい問題を提起する必要がありますstackoverflowの原則のために? – paretech