- 抽象方法
class Person():
def say(self):
pass
class Student(Person):
def say(self):
print("i am student")
- 抽象类: 包含抽象方法的类
- 抽象类可以包含非抽象方法
- 抽象类可以有方法和属性
- 抽象类不能进行实例化
- 必须继承才能使用,且继承的子类必须实现所有抽象方法
import abc
class Person(metaclass=abc.ABCMeta):
@abc.abstractmethod
def say(self):
pass
class Student(Person):
def say(self):
print("i am student")
s = Student()
s.say()
- 补充:函数名和当做变量使用
class Student():
pass
def say(self):
print("i am say")
s = Student()
s.say=say
s.say(9)
- 组装类
from types import MethodType
class Student():
pass
def say(self):
print("i am say")
s = Student()
s.say=MethodType(say,Student)
s.say()
- 元类
# 类名一般为MetaClass结尾 class StudentMetaClass(type): def __new__(cls, *args, **kwargs): print("元类") return type.__new__(cls, *args, **kwargs) class Teacher(object, metaclass=StudentMetaClass): pass t = Teacher() print(t.__dict__)