python-动态创建类

方式一

# 类也是对象 type是创建类的类

def create_class(name):
    if name == 'user':
        class User(object):
            def __str__(self):
                return 'User'
        return User
    else:
        class Company(object):
            def __str__(self):
                return 'Company'
        return Company

if __name__ == '__main__':
    my_class = create_class('user')
    my_obj = my_class()
    print(my_obj)

 方式二:

# type动态创建类
# 元类就是创建类的类 type -> class(对象) -> 对象
class BaseClass(object):
    def answer(self):
        return 'i am baseclass'

def create_class(name):
    if name == 'user':
        return type('User',(BaseClass,),{'name':'User','say':say})
    else:
        return type('Company',(BaseClass,),{'name':'Company','say':say})

def say(self):
    return f'i am {self.name}'

if __name__ == '__main__':
    my_class = create_class('user')
    my_obj = my_class()
    print(my_obj.name)
    print(my_obj.say())
    print(my_obj.answer())

 

THE END
分享
二维码
打赏
< <上一篇
下一篇>>