翻译一下Python中type是什么意思?有什么用(python的type是什么意思)

网友投稿 797 2022-08-05

翻译一下Python中type是什么意思?有什么用(python的type是什么意思)

翻译一下Python中type是什么意思?有什么用(python的type是什么意思)

近几年,Python语言因其编程简洁被广泛应用。其中,Python中有很多内置函数可供我们使用,例如:len(),range(),sum(),print(),input(),type()....

今天就来和大家聊聊Python的type函数,在Python中翻译是一个内建的获取变量类型的函数

具体的使用:

示例1

class A(object):

num=100

class AA(object):

bar=True

def isShow(self):

print(self.bar)

def info(self):

print(self.num)

@staticmethod

def static_info():

print("the static of method")

@classmethod

def class_info(cls):

print(cls.num)

B = type("B",(A,AA,),{"info":info,"static_info":static_info,"class_info":class_info,"isShow":isShow,"param":999})

if __name__ == '__main__':

b=B()

b.info()

b.static_info()

b.class_info()

b.isShow()

print(b.param)

Type() 方法参数解释:

“B” 这个字符串表示当前定义的类名

(A,AA,) 这个元组里面定义的是上面B的父类

{}后面的这个字典表示是方法和属性 使用见main方法中的操作。

示例2

def upper_params(future_class_name, future_class_parents, future_class_attr):

# 遍历属性字典,把不是__开头的属性名字变为大写

newAttr = {}

for name, value in future_class_attr.items(): # 遍历字典

if not name.startswith("__"): # 如果不是以__开头

newAttr[name] = value.upper()

#将future_class_attr字典中的键大写,然后赋值

return type(future_class_name, future_class_parents, newAttr) # 第三个参数为新修改好的值(类名,父类,字典)

class Test(object, metaclass=upper_params):

# 使用upper_attr对类中值进行修改

name = 'tony' # 一开始创建Foo类时

print(hasattr(Test, 'name')) # hasattr查看Foo类中是否存在bar属性

print(hasattr(Test, 'NAME'))

test = Test() # 实例化对象

print(test.name) # 输出

使用说明:

1.上面的使用其实是引入了元类的概念,那么什么是元类了?

我们知道了 Python 中的类也是对象,元类就是用来创建这些类(对象)的,元类就是类的类。函数 type 实际上是一个元类。type 就是 Python 在背后用来创建所有类的元类。type就是创建类对象的类。

你可以通过检查 class 属性来看到这一点。Python中所有的东西,注意,我是指所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象,而且它们都是从一个类创建而来。

2.metaclasss有什么用?

type 可以创建类,如果存在一个方法,返回一个 type 动态创建的类,在使用 class 定义类的时候,把这个方法赋值给 metaclass,就可以实现动态的改变 class 的定义。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python语言中eval是什么意思?基本用法是什么?
下一篇:什么?Python爬虫是病毒?一文带你真正了解什么是Python爬虫(爬虫是python吗?)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~