Tôi đang cố gắng mở rộng lớp datetime.datetime
của Python bằng một vài phương pháp bổ sung. Như vậy, ví dụ như tôi đang làm:Làm cách nào để mở rộng datetime.datetime của Python bằng các phương thức của riêng tôi?
import datetime
class DateTime(datetime.datetime):
def millisecond(self):
return self.microsecond/1000
nhưng sau đó nếu tôi làm
>>> d = DateTime(2010, 07, 11, microsecond=3000)
>>> print d.millisecond()
3
>>> delta = datetime.timedelta(hours=4)
>>> newd = d + delta
>>> print newd.millisecond()
AttributeError: 'datetime.datetime' object has no attribute 'millisecond'
Điều này rõ ràng là bởi vì làm như d + delta
gọi phương thức datetime.datetime.__add__()
mà trả về một đối tượng datetime.datetime
.
Có cách nào để tôi có thể biến đối tượng datetime.datetime
này chuyển thành đối tượng DateTime
không? Hoặc tôi có phải thực hiện lại tất cả các toán tử trong lớp con DateTime
của mình để trả lại đúng loại không?
LoạiError: không thể đặt thuộc tính của kiểu mở rộng/loại tiện ích mở rộng '.datetime ' – cmcginty
Một trong những cách sử dụng tốt nhất là triển khai các bit chức năng bình thường sẽ không xuất hiện cho đến phiên bản tương lai, đặc biệt nếu chúng khá đơn giản và hữu ích. – SilverbackNet