在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