zoukankan      html  css  js  c++  java
  • python漫游2

    Python中type、metaclass、class、object

    1.python中class也是对象,它的类就是metaclass

    2.使用type创建类的方式:MyClass = type('MyClass', (), {}),第一个参数为类名,第二个参数为父类名,第三个参数为成员变量(以键值对的方式给出)

    3.

    class UpperAttrMetaclass(type):
    
        def __new__(cls, clsname, bases, dct):
    
            uppercase_attr = {}
            for name, val in dct.items():
                if not name.startswith('__'):
                    uppercase_attr[name.upper()] = val
                else:
                    uppercase_attr[name] = val
    
            return super(UpperAttrMetaclass, cls).__new__(cls, clsname, bases, uppercase_attr)
    
    class Foo(object, metaclass=Thing, kwarg1=value1):
        ...
    
    class Thing(type):
        def __new__(class, clsname, bases, dct, kwargs1=default):
            ...

    4.在python中要访问某一对象(包括变量、模块、方法)都会去namespace中根据对象名去搜索搜索顺序为LEGB(local>enclose function>globals>_buildins_)

    5.python编译器启动的时候会创建一个全局字典(global namespace):sys.modules。在进行import A操作时,先在sys.modules搜索是否有A,如果没有则导入(加入global namespace),如果有则使用sys.modules中的模块。

    python中的装饰器

    在不改变原函数的基础上,对原函数的功能做出修改。

    1.可以有基于方法的带参的、不带参的

    2.可以有基于类的参数的,不带参数的

  • 相关阅读:
    js---选择排序
    js----冒泡排序
    js---快速排序
    js---去重方法(二)
    js---去重方法(一)
    js--进度条
    随机生成6位数验证码
    倒计时
    别踩白块
    贪吃蛇小游戏
  • 原文地址:https://www.cnblogs.com/drinkMilk/p/10713873.html
Copyright © 2011-2022 走看看