美文网首页
python元类示例

python元类示例

作者: 邹霉霉 | 来源:发表于2018-06-18 13:43 被阅读0次
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:Runcheng
class_name = "Spam"
base = ()
def run(self):
    print("%s is runing" % self.name)

class_dict = {
    "name":"zou",
    "run":run
}
S = type("Spam", base, class_dict)
print(S)
print(type(S))
s = S()
print(type(s))
s.run()


# 利用type产生元类
SB = type("SB", (object,), {})
s = SB()
s.name = "zou"
print(type(s))     # <class '__main_ _.SB'>
print(s.__dict__)  # {'name': 'zou'}


# 3 自定义元类限制注释信息
from collections import Iterable,Iterator
class Mymeta(type):
    def __init__(self, class_name, base=None, dict=None ):
        print(self)
        print(class_name)
        print(base)
        print(dict)
        for key in dict:
            if not callable(dict[key]):continue
            if not dict[key].__doc__:
                raise Exception("你还没写注释信息")

    def __call__(self, *args, **kwargs):
        print("from mytype",self,args,kwargs) # from mytype <class '__main__.Foo'> ('zou',) {}
        obj = self.__new__(self)
        self.__init__(obj, *args, **kwargs)
        return obj


class Foo(metaclass=Mymeta):
    x = 1
    def __init__(self,name):
        "注释信息" # 不写这里的注释,直接抛出元类的异常信息
        self.name = name
    def run(self):
        "run function"
        print("running")


f = Foo("zou")      # from mytype <class '__main__.Foo'> ('zou',) {}
print(Foo.__dict__)








相关文章

  • python元类示例

  • Python 进阶丨如何创建你的第一个 Python 元类?

    摘要:通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类...

  • 元类使用示例

    知识储备:元类的作用:拦截类的创建,做一些自定义的操作,并将修改过的类返回给调用者。 案例演示:现在有一个类Stu...

  • 即用即弃型邮箱

    python源码 使用示例: email = Email() 构造邮箱类 email = Email(proxy=...

  • 10.元类

    元类的对象是类type是python的内建元类 自定义元类:

  • 29.Python之面向对象的元类

    Python之面向对象的元类 什么是元类?类的类就是元类,元类创建对象。使用class定义的类,用来产生程序员自己...

  • 类注释模板

    类注释模板: :: 示例: :: 异常策略 OORedis 抛出异常的策略仿效 Python 内置类的异常抛出策略...

  • Python 元类

    什么是元类?元类就是创建类的类,type是最原始的一个元类。(实例是实例化的类,而类是元类的实例)python中一...

  • scala类与伴生类、单例

    类似python元类与apply方法类似python中call方法

  • 支持多线程的代理IP池

    python源码 使用示例: pool = Proxy() 构造代理池类 pool = Proxy(min_poo...

网友评论

      本文标题:python元类示例

      本文链接:https://www.haomeiwen.com/subject/ywrneftx.html