Python 从日期继承_uiadd_uuu,并返回新类的实例
我有一些工作需要在每个月的最后一个星期五以稍微不同的方式进行。因此,我想添加一个方法IsLastFriday to date,如果查看的日期是当月的最后一个星期五,则该方法返回Python 从日期继承_uiadd_uuu,并返回新类的实例,python,oop,Python,Oop,我有一些工作需要在每个月的最后一个星期五以稍微不同的方式进行。因此,我想添加一个方法IsLastFriday to date,如果查看的日期是当月的最后一个星期五,则该方法返回True。因此,我编写了自己的类,该类继承自date,并添加了该逻辑 from datetime import date from datetime import timedelta class my_date(date): def __init__(self, y, m ,d): super(
True
。因此,我编写了自己的类,该类继承自date,并添加了该逻辑
from datetime import date
from datetime import timedelta
class my_date(date):
def __init__(self, y, m ,d):
super(my_date, self).__init__(y, m, d)
def IsLastFriday(self):
days = [0 31 28 31 30 31 30 31 31 30 31 30 31]
month = self.month
total_days = days[month]
if total_days - self.day <= 6 and self.isoweekday == 5:
return True
else:
return False
def __iadd__(self, other):
n_date = self.__add__(other)
n_my_date = my_date(n_date.year, n_date.month, n_date.day)
return n_my_date
我得到一个错误,因为'super'对象没有属性'\uuuu iadd\uuuu'
,如果我尝试调用\uuuu add\uuuuu
,我会得到一个date back的实例
我觉得我应该能够以某种方式继承\uuu iadd\uuu
,因为它可以为日期对象调用
任何帮助,非常感谢
我觉得我应该能够以某种方式继承\uuu iadd\uuu
,因为它可以为日期对象调用
不是<代码>日期对象没有
\uuuu iadd\uuuu
;当您尝试在它们上使用+=
时,Python会查找\uuuIdd\uIdd\uIdd
,发现它不在那里,并使用\uIdd\uIdd
代替。由于date
对象是不可变的,因此无法以一种变异的方式实现\uuuidd\uuuu
,因此您根本不应该实际实现\uidd\uuuu
;如果您只想添加一些在日期时间
实例上运行的逻辑,那么应该实现\uuuu添加
子类化内置类型不是一个好办法。一个简单的函数就可以了:
import datetime
def is_last_friday_of_month(dt):
"""Determine whether `dt` is the last Friday of the month."""
if dt.weekday() != 4: # Friday is 4
return False
dt_week_after = dt + datetime.timedelta(weeks=1)
return dt.month != dt_week_after.month
像这样使用它:
now = datetime.datetime.now()
if is_last_friday_of_month(dt):
print("It's the last Friday of the month.")
now = datetime.datetime.now()
if is_last_friday_of_month(dt):
print("It's the last Friday of the month.")