在python中实现final类
- 2019 年 11 月 21 日
- 笔记
当然要利用下metaclass做手脚啦
class Final(type): def __new__(cls, name, bases, classdict): for b in bases: if isinstance(b, Final): raise TypeError("type '{0}' is Final type".format(b.__name__)) return type.__new__(cls, name, bases, dict(classdict)) class Hi(object): def hi(self): print("hi") class SubHi(Hi, metaclass=Final): pass # 这个没问题 s = SubHi() s.hi() # TypeError: type 'SubHi' is Final type class SubHi2(SubHi): pass