编程学习网 > 编程语言 > Python > 翻译一下Python中type是什么意思?有什么用
2022
02-25

翻译一下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 的定义。

以上就是“翻译一下Python中type是什么意思?有什么用”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网


扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取