字典如何递归的通过点操作符访问和赋值?

比如对如下字典数据:我希望通过 info.student.name 的方式访问,同时也能通过info.student.name="Tom"的方式修改

info={
    "student":{
        "name":"zhangsan",
        "age":20,
        "male":"man"
    },
    "teacher":{
        "name":"Mr Wang",
        "age":25,
        "male":"woman",
        "course":{
            "math":"Friday",
            "english":"Monday"
        }
    }
}

这个要自定义python的元类才能实现,orm框架就是通过这种方式实现的,就是通过实心点访问属性或调用方法