在 Python 中,你可以通过使用一个工厂函数或装饰器来避免每次调用 __new__
。下面是两种常见的解决方法:
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def create_instance(arg1, arg2):
instance = MyClass.__new__(MyClass)
instance.__init__(arg1, arg2)
return instance
# 使用工厂函数创建对象
obj = create_instance("arg1", "arg2")
def auto_instantiate(cls):
original_new = cls.__new__
original_init = cls.__init__
def new_and_init(*args, **kwargs):
instance = original_new(cls)
original_init(instance, *args, **kwargs)
return instance
cls.__new__ = new_and_init
cls.__init__ = lambda self, *args, **kwargs: None
return cls
# 使用装饰器
@auto_instantiate
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
# 创建对象
obj = MyClass("arg1", "arg2")
这些方法可以帮助你避免在每次调用 __new__
时都手动调用 __init__
方法。
上一篇:避免每次打开对称密钥
下一篇:避免每次调用函数时声明空数组。