water_blue 发表于 2021-11-17 16:34:08

python 内部类 如何序列化

class wordnet():
    class word():
      def __init__(self) -> None:
            self.word = List
            self.offset = int
            self.pos = str

    def __init__(self) -> None:
      self.word_set = self.word()
      self.hyper = self.word()
      self.hypon = self.word()
      self.partOf = self.word()
      

    def output(self):
      with open('data.json', 'a', encoding='utf-8') as d:
            print(self.__dict__)
            jsonstr = json.dumps(self.__dict__)
            d.write(jsonstr + '\n')


我想用 self.__dict__ 序列化 wordnet 的实例,但是内部类 word 无法被序列化,输出 {'word_set': <__main__.wordnet.word object at 0x000001C3B3B09B38>, 'hyper': <__main__.wordnet.word object at 0x000001C3AFDAD7F0>, 'hypon': <__main__.wordnet.word object at 0x000001C3B4946080>, 'partOf': <__main__.wordnet.word object at 0x000001C3B49461D0>}

应该怎么解决?

hrpzcf 发表于 2021-11-17 16:56:49

json.dump

小黄练编程 发表于 2021-11-17 17:53:27

{:5_107:}

kogawananari 发表于 2021-11-18 09:10:50

2个方法
1 使用框架 如fastapi只要你的对象实现了keys方法和__getitem__方法 它会帮你序列化
2 使用json.dumps   它有个cls参数需要你定义一个default方法 具体百度 传进去之后就可以序列化指定的类
页: [1]
查看完整版本: python 内部类 如何序列化