首页 / PYTHON / python之type
python之type
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python之type,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1412字,纯文字阅读大概需要3分钟。
内容图文
![python之type](/upload/InfoBanner/zyjiaocheng/814/fb09977d773b406b9ea10bbd84ee1076.jpg)
先上代码
class Foo: pass print(Foo, type(Foo)) print(type, type(type)) ''' <class '__main__.Foo'> <class 'type'> <class 'type'> <class 'type'> '''
Python中万物皆对象,所有用来创建对象的类,本身也对象,类是type类的对象
type类叫做元类,是所有元类的类
元类: 造类的类 -类的类
-- 控制类的产生
--控制类的对象的产生
在type的init方法中
def __init__(cls, what, bases=None, dict=None): # known special case of type.__init__ """ type(object_or_name, bases, dict) type(object) -> the object's type type(name, bases, dict) -> a new type # (copied from class doc) """ pass
type(name, bases, dict) -> a new type
name为类的名字 'C'
bases为继承的基类 (object,)
dict为名称空间 {}
class Foo: pass print(Foo, type(Foo)) C = type('C', (object,), {}) print(C, type(C)) C.name = 123 print(C.name)
'''
<class '__main__.Foo'> <class 'type'>
<class '__main__.C'> <class 'type'>
123
'''
由此可见使用type可以直接创建一个类
使用exec给类创建名称空间
s = ''' my_a = 10 my_b = 20 def __init__(self, name): self.name = name @classmethod def print_msg(cls,msg): print(msg) ''' dic = {} exec(s, {}, dic) C = type('C', (object,), dic) print(C, type(C)) print(C.__dict__) # C() # 报错 __init__中带有一个参数 C('yyf') # 不报错 C.print_msg(123)
'''
<class '__main__.C'> <class 'type'>
{'my_a': 10, 'my_b': 20, '__init__': <function __init__ at 0x01AA0858>, 'print_msg': <classmethod object at 0x01AD9950>, '__module__': '__main__', '__dict__': <att ribute '__dict__' of 'C' objects>, '__weakref__': <attribute '__weakref__' of 'C' objects>, '__doc__': None}
123
'''
内容总结
以上是互联网集市为您收集整理的python之type全部内容,希望文章能够帮你解决python之type所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。