注意:使用python的flyweight实现的一部分
import weakref
class CarModel:
_models = weakref.WeakValueDictionary()
def __new__(cls, model_name, *args, **kwargs):
model = cls._models.get(model_name)
if not model:
model = super().__new__(cls)
cls._models[model_name] = model
return model
def __init__(self, model_name, air=False):
if not hasattr(self,"initted"):
self.model_name = model_name
self.air = air
self.initted=True
问题1>super()是什么意思?是指CarModel的父类吗?
问题2>我也很难理解__new__的功能是如何工作的?具体来说,下面的一行。
model = super().__new__(cls)
__new__说明:
The constructor function is called __new__ as opposed to __init__, and
accepts exactly one argument, the class that is being constructed (it
is called before the obj