Python types 模块详解

编写基础类

  • 将方法绑定到类上

type函数





  • 实验代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import types
    class Student(object):
    pass

    def set_name(self,name):
    print(self)

    s1 = Student()
    s2 = Student()
    s1.set_name = types.MethodType(set_name,Student)
    s1.set_name("xxx")

结论

  • Class.xx 表示绑定到类上,会影响所有的类并且在绑定后新生成的实例也会有该函数。Instance.xx 表示绑定到实例上,只会影响本实例
  • MethodType 第二个参数传入实例,那么就是实例方法,函数的self 表的是实例
  • MethodType 第二个参数传入Class,那么就是类方法,函数的self 表的是Class
  • MethodType 不能绑定静态方法
  • type 函数生成一个新类,需要注解指定类方法,静态方法