type在python中的用法,python语句type
本文主要介绍了python中类型、元类、类和对象的用法,具有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。
目录
类型,元类,类,对象,简单描述类的生成,元类,元类,学习和总结类型的作用是什么?
type,元类,类,对象
简单描述
1.type是python内置的元类,新创建的元类需要继承type。
2.元类用于创建类,类用于创建对象
类的生成方式
传统上,类是通过声明关键字定义的。
#1.创建人员类别
#2.继承对象
#3.让属性吃
类人(对象):
def吃(self,food=rice):
打印(“吃% s“% food”)
p=人()
p.eat(food=fruits )
按类型生成
注意:这种方法很少使用。通常,元类由类型生成,然后元类生成类,对象实例从该类派生。
def吃(self,food=rice):
打印(“吃% s“% food”)
People=type(People ,(object,),{eat:eat})
#People=type(People ,(object,),dict(eat=eat))
p=人()
p .吃()
元类
一般来说,元类是以元类为后缀命名的,元类是从type派生出来的,所以需要继承type。元类的操作在新方法中完成,该方法在init方法之前被调用。
示例一
#模式1,使用lambda匿名函数
类语言元类(类型):
def __new__(cls,name,bases,attrs):
attrs[ speak ]=lambda self : print(self . language)
返回类型。__new__(类别、名称、基数、属性)
#模式2,使用预定义的功能
def speak(self):
打印(“朗读% s“% self . language”)
#创建元类语言元类
类语言元类(类型):
def __new__(cls,name,bases,attrs):
说话
#返回类型。__new__(类别、名称、基数、属性)
返回super(LanguageMetaClass,cls)。__new__(cls.name,bases,attrs)
#使用创建的元类创建一个类(python2.x与3.x不一致)
#python2.x
#默认的新类由type()构造,当__metaclass__在类中定义时,由它构造。__元类_ _搜索顺序:
#1.找到您自己的__元类_ _属性
#2.如果有父类,找到父类的__元类_ _通过父类获得。__class__属性)
#3.如果没有父类,请在模块中查找__元类_ _。
类人(对象):
__元类__=语言元类
def __init__(self,language=中文):
自我语言=语言
#python3.x
#默认的新类由type()构造,可以在指定元类关键字参数后由元类构造。
class People(object,meta class=language meta class):
def __init__(self,language=中文):
自我语言=语言
p1=人(语言=英语)
说英语
p2=人()
p2 . speak()#说中文
示例二
#创建元类AddMetaClass
类AddMetaClass(类型):
def __new__(cls,name,bases,attrs):
attrs[ add ]=self,value:self.append(value)
返回类型。__new__(类别、名称、基数、属性)
#python2.x
类MyList(List): #MyLIST在list的基础上有一个add方法。
__元类__=添加元类
及格
#python3.x
Classmylist (list,metaclass=addmetaclass): # my list在list的基础上有一个add方法。
及格
list1=我的列表()
列表1.add(1)
打印(列表1) #[1]
列表1.add(2)
打印(列表1) #[1,2]
元类type学习总结
Type是一个元类,即python中的所有类实际上都是type类的实例化对象。
type的作用是干什么呢?
1、我们直接type()来判断一个对象的类型
type不是一个类吗?为什么可以直接调用?因为type类实际上是一个对象,一个自己类的对象,而方法__cal__()是在type类中实现的,所以我们知道只要实现__cal__()的类,就可以直接调用该类实例化的对象,也就是可调用对象。
下面给个例子:
打印(类型(1))
打印(类型( abc ))
打印(类型([]))
运行结果:
类“int”
类别“str”
类别列表
其实判断一个对象的类型也可以通过isinstance()来判断。
print(isinstance((),tuple))
print(isinstance(abc ,str))
print(isinstance([],list))
运行结果:
真实的
真实的
真实的
2、type的第二个作用就是:创建类
其实这个不常用。一般我们用类来调用,而不用类型;
像下面这样:
类型( Foo ,(object,),{a:1})
以上个人经验,希望给你一个参考,也希望你能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。