class MyClass:
def __init__(self, x, y):
self.x = x
self.y = y
def to_dict(self):
return {
'x': self.x,
'y': self.y
}
@classmethod
def from_dict(cls, data_dict):
return cls(data_dict['x'], data_dict['y'])
# 示例使用
obj = MyClass(10, 20)
dict_obj = obj.to_dict()
print(dict_obj)
new_obj = MyClass.from_dict(dict_obj)
print(new_obj.x, new_obj.y)
涉及魔法方法解释
__init__
: 这是构造函数魔法方法。当创建类的实例时会自动调用,用于初始化实例的属性。在上述代码中,__init__
方法接收参数x
和y
,并将它们赋值给实例的x
和y
属性。
__new__
: 虽然代码中未显式使用,但它是在__init__
之前调用的魔法方法,负责创建类的实例对象。__new__
是一个静态方法,第一个参数是类本身(cls),通常用于对象创建的特殊定制,如单例模式等。
to_dict
: 这不是魔法方法,而是自定义的实例方法,用于将实例对象转换为字典。它创建一个字典,键为属性名,值为对应的属性值。
from_dict
: 这是一个类方法,使用@classmethod
装饰器定义。类方法的第一个参数是类本身(cls),它从给定的字典创建并返回类的实例对象。