自定义类如何实现序列化
在Python中,可以通过定义一个类的__init__
和__str__
方法来实现序列化。其中,__init__
方法用于初始化对象的状态,__str__
方法用于返回一个字符串表示,这个字符串可以被用来重新创建对象。
下面是一个简单的例子:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'Person(name={self.name}, age={self.age})'
# 序列化
person = Person('Alice', 30)
serialized_person = str(person) # 序列化成字符串
print(serialized_person) # 输出:Person(name=Alice, age=30)
# 反序列化
deserialized_person = eval(serialized_person) # 反序列化成对象
print(deserialized_person.name) # 输出:Alice
print(deserialized_person.age) # 输出:30
需要注意的是,eval
函数具有一定的安全风险,因为它会执行传入的字符串作为代码。在实际应用中,应该使用更安全的方法来反序列化对象,例如使用pickle模块。
另外,自定义类的序列化还需要考虑一些特殊情况,例如循环引用、不可序列化的属性等。对于这些情况,需要使用一些额外的技术来处理。
可以参考序列化方法:implements rpc.Parcelable。
示例代码如下:
详细可以参考文档:Parcelable。