type( ) 创建类

Posted nayike

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了type( ) 创建类相关的知识,希望对你有一定的参考价值。

对象是由类创建的,类是由type创建的。

 

熟悉的方式:

class A(object):
    pass

print(type(A))   #<class ‘type‘>

 

type方式:

A = type(A,(object,),{})

print(type(A))  #<class ‘type‘>

 

参数格式:

type(class_name,bases,dic)

要动态创建一个class对象,type()函数依次传入3个参数:

1、class的名称,字符串形式;
2、继承的父类集合,注意Python支持多重继承,如果只有一个父类,注意tuple的单元素写法;
3、{k:v} 或者 dict(k=v)

 

例一:

技术分享
class Foo(object):
    class Meta:
        model = qwer


由type创建:
_meta = type(Meta,(object,),{model:qwer})
Foo = type(Foo,(object,),{Meta:_meta})
View Code

 

例二:

老规矩,来个熟悉的:

技术分享
class Hello(object):

    def hw(self,name=World):
        print(Hello,%s%name)
        

h = Hello()
h.hw()

print(type(Hello))
print(type(h))


#输出结果:
# Hello,World
# <class ‘type‘>
# <class ‘__main__.Hello‘>
View Code

 

再换个:

技术分享
def func(self,name=World):
    print(Hello,%s%name)

Hello = type(Hello,(object,),{hw:func})

h = Hello()
h.hw()


print(type(Hello))
print(type(h))


#数据结果:
    # Hello,World
    # <class ‘type‘>
    # <class ‘__main__.Hello‘>
    
    
#注释:class的方法名称与函数绑定,这里我们把函数func绑定到方法名hw上。
View Code

 

以上是关于type( ) 创建类的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试在android studio上创建标签片段

片段创建的 Intent 不会触发 onNewIntent

在android studio中升级repo v9后,片段必须是公共静态类崩溃错误

片段必须是公共静态类才能从实例状态正确重新创建

SpringBoot启动报错“Consider defining a bean of type ‘xxx.mapper.UserMapper‘ in your configuration.“(代码片段

detectron2报AttributeError: Attribute ‘evaluator_type‘ does not exist in the metadata of dataset(代码片段