热线电话:13121318867

登录
2019-03-20 阅读量: 558
python如何检查基类个数

现在让我们直接创建一个元类而不使用type()。在下面的示例中,我们将创建一个元类MultiBases,它将检查正在创建的类是否继承了多个基类。如果是这样,它将引发错误。

# our metaclass

class MultiBases(type):

# overriding __new__ method

def __new__(cls, clsname, bases, clsdict):

# if no of base classes is greator than 1

# raise error

if len(bases)>1:

raise TypeError("Inherited multiple base classes!!!")

# else execute __new__ method of super class, ie.

# call __init__ of type class

return super().__new__(cls, clsname, bases, clsdict)

# metaclass can be specified by 'metaclass' keyword argument

# now MultiBase class is used for creating classes

# this will be propagated to all subclasses of Base

class Base(metaclass=MultiBases):

pass

# no error is raised

class A(Base):

pass

# no error is raised

class B(Base):

pass

# This will raise an error!

class C(A, B):

pass

输出:

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 8, in __new__
TypeError: Inherited multiple base classes!!!
0.0000
5
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子