python核心

元类:

Python中所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象,而且它们都是从一个类创建而来,这个类就是type

元类就是类的类,类作为一种对象,即可以在运行时动态的创建类:

1.在函数里创建类

def choose_class(name):
    if name == 'foo':
        class Foo(object):
            pass
            return Foo     # 返回的是类,不是类的实例
    else:
        class Bar(object):
            pass
            return Bar

>>> MyClass = choose_class('foo')    #此时MyClass 为Foo
>>> print MyClass              # 函数返回的是类
<class '__main__'.Foo>
>>> print MyClass()            # 通过这个类创建类实例,也就是对象 相当于 print( Foo())
<__main__.Foo object at 0x89c6d4c>

2.使用type创建类

#type(类名, 由父类名称组成的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))
Foo = type('Foo', (), {'bar':True})

#相当于如下代码
>>> class Foo(object):
…       bar = True



动态语言:


-动态语言:可以在运行的过程中,修改代码
-静态语言:编译时已经确定好代码,运行过程中不能修改

python是动态语言,运行时可以给类和类实例绑定属性和方法

__slots__变量:限制类实例的属性

__slots__ = ("name", "age")
__slots__定义的属性仅对当前类实例起作用,对继承的类是不起作用的


原文地址:https://www.cnblogs.com/shuai-long/p/9593374.html