面向对象
基础:三大特性
1.继承
2.抽象
python 抽象示例:
import abc
from abc import *
classSClass(metaclass = abc.ABCMeta):
@abstractmethod
def my_print(self):
pass
classCClass(SClass):
pass
cc = CClass()
3.封装
进阶:
特殊方法:
__enter__
__exit__
上面这两个特殊方法是with方法进去后和出来后执行的函数.
高级:metaclass
1. 创建类有2中方式
class Foo(object): pass
type('Foo',(object,),{})
2. 如果想要一个类由其他type创建,可以通过metaclass进行指定
class Mytype(type):
def __call__(self....):
pass
# 1. 执行Mytype.__init__
class Foo(metaclass=Mytype):
def __init__():
pass
def __new__(...):
return 对象
# 2. 执行Mytype.__call__
# 3. 执行Foo类的__new__
# 4. 执行Foo类的__init__
obj = Foo()