假设我正在 KV 数据存储中创建一个表示和对象的类。创建构造函数非常简单......
class KVObject:
def __init__(self, key, value, add=True):
self.key = key
self.value = value
if add == True:
kv_create(key, value)
现在,假设我想检索一个 KV 对象......并从中构造一个类实例。我想我会将这个类方法添加到我的 DataBaseObject 类中。
@classmethod
def get_kv_object(cls, key):
value = kv_get(key)
cls.__init__(key, value, add=False)
...但是当从类方法 (cls.__init__) 调用init时,Python 要求为 self 提供一个参数!
有任何想法吗?非常感谢!我知道这是一个简单的例子,但它绝对适用于一些更复杂、更有趣的情况!
编辑:感谢您的回复。我在研究这个时学到了一些有用的东西,那就是 object.__new__ 在调用 MyClass(...) 时在对象上调用 __init__,有效地为 MyClass 提供了一个未初始化的类实例。使用从 MyClass 中调用的 args初始化。同样,按照您的答案中的建议,调用 cls(...) 是有意义的。谢谢你。