Python中type()详解:动态创建类
众所周知:
广东省有哪些大学type()函数可以查看变量的类型:
先看⼀个简单的列⼦来看⼀下type查看变量类型
class Animal():
pass
a=Animal()
print(type(a))
怎样给电脑设密码print(type(Animal))
<class '__main__.Animal'>
灯罩材质<class 'type'>
可以发现我定义的Animal类本⾝的类型是 type
从 Python 解释器的⾓度来看,当程序使⽤ class 定义 Animal 类时,也可理解为定义了⼀个特殊的对象(type 类的对象),并将该对象赋值给 Animal 变量。因此,程序使⽤ class 定义的所有类都是 type 类的实例。
实际上 Python 完全允许使⽤ type() 函数(相当于 type 类的构造器函数)来创建 type 对象,⼜由于 type 类的实例就是类,因此 Python 可以使⽤ type() 函数来动态创建类
正常情况下类的创建及实例化调⽤
class Test():
name = "Test"
def hello(self):
print("hello world")
t = Test()
t.hello()#Test.hello(t)
print(t.name)
拍了拍在哪里⽽使⽤type()动态创建类:
def hello(self):
self.name = 10
print("hello world")2011年党员思想汇报
t = type("hello",(),{"a":1,"hello":hello})
print(t)
T = t()
print(T.a)
T.hello()
print(T.name)
<class '__main__.hello'>
1
hello world
10
动态创建类的,其实python中⼀切都是对象,类也是对象;只不过是⼀种特殊的对象,是type的对象
所以type是可以实现动态创建类
python中类创建的本质:
我们使⽤class创建类,当你使⽤class关键字时,Python解释器⾃动创建这个对象。⽽底层其实使⽤的是type函数(type函数也可以查看实例所属类型)来创建类的。所以我们可以直接使⽤type()函数来⼿动实现动态创建类。
当type()只有⼀个参数时,其作⽤就是返回变量或对象的类型
当type()有三个参数时,其作⽤就是创建类对象:
第⼀个参数:name表⽰类名称,字符串类型
第⼆个参数:bases表⽰继承对象(⽗类),元组类型,单元素使⽤逗号
第三个参数:attr表⽰属性,这⾥可以填写类属性、类⽅式、静态⽅法,采⽤字典格式,key为属性名,value为属性值
总结:
通过type添加的属性是类属性,并不是实例属性
通过type可以给类添加普通⽅法,静态⽅法,类⽅法,效果跟class⼀样
type创建类的效果,包括继承等的使⽤性质和class创建的类⼀样。本质class创建类的本质就是⽤type创建。所以可以说python中所有类都是type创建的。
txl 是什么意思对元类的理解与注意事项
元类就是类的类,python中函数type实际上是⼀个元类。type就是Python在背后⽤来创建所有类的元
类。Python中所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象,⽽且它们都是从⼀个类创建⽽来,这个类就是type。type就是Python的内建元类,当然了,也可以创建⾃⼰的元类
。
python查看对象所属类型既可以⽤type函数,也可以⽤对象⾃带的__class__属性。
以下代码验证:任何对象最终的所属类都是type。 type是所有类的创造者。
num = 1
print(num.__class__)
print(num.__class__.__class__)
<class 'int'>
<class 'type'>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论