美文网首页
python 之元类大人

python 之元类大人

作者: 青哥DevOps | 来源:发表于2018-11-23 11:41 被阅读0次

断断续续的花了一天的时间仔细研究了一下元类,虽然日常我们使用元类的场景非常少,几乎没有,但是了解一下类的老大元类,或者说类是元类的实例,还是有必要的。
不做太多的解析了。仅此记录一下。

# -*- coding:utf-8 -*-

#
# class Hello(object):
#     def hello(self, name=''):
#         print 'Hello, %s.' % name
#
#
# h = Hello()
# print type(h)
#
# def fn(self, name='world'):
#     print 'Hello, %s.' % name
#
#
# Hello = type('Hello', (object,), dict(hello=fn))
#
# h = Hello()
# h.hello()
# print type(h)




class ListMetaclass(type):
    # def __new__(upperattr_metaclass, future_class_name, future_class_parents, future_class_attr):
    def __new__(cls, *args, **kwargs):
        # kwargs['add'] = lambda self, value: self.append(value)
        kwargs['add'] = 'aaaaa'
        # print future_class_attr
        # print upperattr_metaclass
        # print future_class_name
        # print future_class_parents
        return kwargs

# class Mylist:
#     a = 'ccc'
#     __metaclass__ = ListMetaclass
#
# 
# L = Mylist()
# L.add(1)
# print L

print    ListMetaclass(**{'ssh':'abc'})



# # 元类会自动将你通常传给‘type’的参数作为自己的参数传入
# def upper_attr(future_class_name, future_class_parents, future_class_attr):
#     '''返回一个类对象,将属性都转为大写形式'''
#     #选择所有不以'__'开头的属性
#     attrs = ((name, value) for name, value in future_class_attr.items() if not name.startswith('__'))
#     # 将它们转为大写形式
#     uppercase_attr = dict((name.upper(), value) for name, value in attrs)
#     #通过'type'来做类对象的创建
#     return type(future_class_name, future_class_parents, uppercase_attr)#返回一个类
#
#
# class Foo(object):
#     __metaclass__ = upper_attr
#     bar = 'bip'
#
# print Foo().BAR
#
# class BridgeFactory(object):
#
#     def __new__(cls, *args, **kwargs):
#         protocol = kwargs.get('protocol', 'ssh')
#         return {'ssh': 'test1'}.get(protocol, 'test1')
#
# print BridgeFactory(**{'protocol':'ssh'})

相关文章

  • python 之元类大人

    断断续续的花了一天的时间仔细研究了一下元类,虽然日常我们使用元类的场景非常少,几乎没有,但是了解一下类的老大元类,...

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

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

  • 10.元类

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

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

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

  • Python 元类

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

  • scala类与伴生类、单例

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

  • python 元类

    转载 刘仲雨 两句话掌握python最难知识点——元类 千万不要被所谓“元类是99%的python程序员不会用到的...

  • python元类

    在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立类也是对象。但是,P...

  • Python元类

    类也是对象,在理解元类之前,你需要先掌握Python中的类。Python中类的概念借鉴于Smalltalk,这显得...

  • Python元类

    1. 类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立:...

网友评论

      本文标题:python 之元类大人

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