class ParamMeta(type):
def __str__(self):
return self.__name__
class Param(object):
__metaclass__=ParamMeta
class SomeParam(Param):
pass
我想要的是:
type(SomeParam)==Param
我如何实现这一目标?
更新:我需要改变什么才能获得所需的行为?
更新2:对于后代:这个问题完全是假的。请假装你没看过;)
类对象的类型SomeParam不是Param,它是ParamMeta,并且type()正确地报告了这一点。您混淆了 is-a 和继承自关系。一个SomeParam 实例是-a Param。SomeParam另一方面,类对象继承自Param类对象,但它不是type 的值 Param。
对于子类关系,有内置issubclass()函数,它类似于isinstancefor is-a 关系:issubclass(SomeParam, Param)为真。
编辑:除了使用返回基类的手写函数来隐藏名称(这将极具误导性和糟糕的风格)之外,您无法做任何事情来实现type(SomeParam)返回。Paramtype