多平台统一管理软件接口,如何实现多平台统一管理软件接口
925
2022-06-14
近几年,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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~