# -*- coding: utf-8 -*- # self参数必须要存在,否则type函数无法将其设置为新创建类的内部方法? def set_name(self, name): print("Student name is %s" % name) # 这种命名没有问题,说明Python没有类名校验机制,总之这种方式挺奇怪的 Student = type("Teacher", (object,), dict(get_name=set_name)) s = Student() s.get_name("Bob") # 虽然上边新创建的Teacher类被指向了Student,但s依然是Teacher,不知道这种该怎么解释? print(type(s)) class Person(object): def __init__(self, name): self.__name = name def __str__(self): return self.__name def get_name(self): return self.__name __repr__ = __str__ class PersonMetaclass(type): def __new__(cls, name, bases, attrs): attrs["getName"] = lambda self: self.get_name() return type.__new__(cls, name, bases, attrs) class Boss(Person, metaclass=PersonMetaclass): pass b = Boss("Jerry") print(b.getName()) p = Person("Tom") print(p.getName())
Sign in to make a reply
___Hiboboo