class A:
def __new__(cls):
print("__new__")
return super().__new__(cls)
def __init__(self):
print("__init__")
o = A()
new和init这两个比较容易搞混,他们的主要区别就是:new是一个class建立object的过程,init是有了这个object之后给object初始化的过程,new是有返回值的,init是没有返回值的。如果我们在创建object的过程中传入了一些参数,这些参数既会传入的new中也会传入到init中,在实际应用中new函数用的比较少(一般只有单例的情况修下才用new)。
class date:
def __init__(self, year, month, date):
self.year = year
self.month = month
self,date = date
def __eq__(self,other):
return(self.year == other.year and
self.month == other.month and
self.date == other.date)
x = date(2023,12,11)
y = date(2023,12,11)
print(x == y)
python中的运算符重载,当我们想要比较两个自己定义的class时,需要对运算符进行重载。