python 内部类 解决嵌套字典

在 k8s的 配置文件 如果转json 去看,会发现有三次层的嵌套字典,如果只有一个类 转 json 形成嵌套字典,有一些键就必须要写str 写死,非常不友好,如果键还是跟着类 的属性名走 ,就最好不过了。像java scala c++ 都有内部类

便寻思python 有没有 ,发现当然有,而且还是很不错 的,

class  Dag:

  class Cat:
    def __init__(self):
      self.containerP=8080

  def __init__(self):
    self.apiVersion="apps/v1beta1"
    self.kind='Deployment'
    wifi_arr=['geo','tmtl','father']
    self.metadata=wifi_arr
    cat=self.Cat()
    ports_Arr=[cat.__dict__]
    self.ports=ports_Arr
    
    dic={'app': {
        "containers": [
          {
            "name": "springboot-demo",
            "image": "springboot-demo",
            "imagePullPolicy": "IfNotPresent",
            "ports": [
              {
                "containerPort": 5555
              }
            ]
          }
        ]
      }}
    #print(str(dic))
    self.di=dic
    meta_Dict={'name':'springboot-demo-deployment','labels':dic}
    self.metadata=meta_Dict

Dog 是外部类 ,Cat 是内部类,我在内部类定义的属性,在外部类可以访问,最关键的是,我在 外部类的 构造函数中,可以初始化内部类,然后 利用内部类的属性 再为外部类的属性赋值,
最后大家发现 生成的yaml 完全符合要求

apiVersion: apps/v1beta1
di: &id001
  app:
    containers:
    - image: springboot-demo
      imagePullPolicy: IfNotPresent
      name: springboot-demo
      ports:
      - containerPort: 5555
kind: Deployment
metadata:
  labels: *id001
  name: springboot-demo-deployment
ports:
- containerP: 8080

唯一缺憾的是python的反射 生成类 还是很薄弱的,

你可能感兴趣的:(python 内部类 解决嵌套字典)