-1
class ParamMeta(type):
  def __str__(self):
    return self.__name__


class Param(object):
  __metaclass__=ParamMeta

class SomeParam(Param):
  pass

我想要的是:

type(SomeParam)==Param

我如何实现这一目标?

更新:我需要改变什么才能获得所需的行为?

更新2:对于后代:这个问题完全是假的。请假装你没看过;)

4

1 回答 1

6

类对象的类型SomeParam不是Param,它是ParamMeta,并且type()正确地报告了这一点。您混淆了 is-a 和继承自关系。一个SomeParam 实例是-a ParamSomeParam另一方面,类对象继承Param类对象,但它不是type 的值 Param

对于子类关系,有内置issubclass()函数,它类似于isinstancefor is-a 关系:issubclass(SomeParam, Param)为真。

编辑:除了使用返回基类的手写函数来隐藏名称(这将极具误导性和糟糕的风格)之外,您无法做任何事情来实现type(SomeParam)返回。Paramtype

于 2013-05-28T12:53:20.407 回答