16
class Foo():
    def __init__(self):
        pass
    def create_another(self):
        return Foo()
        # is not working as intended, because it will make y below becomes Foo

class Bar(Foo):
    pass

x = Bar()
y = x.create_another()

y 应该是 Bar 类而不是 Foo。

有没有类似的东西:self.constructor()改为使用?

4

1 回答 1

38

对于新式类,用于type(self)获取“当前”类:

def create_another(self):
    return type(self)()

您也可以使用self.__class__该值type(),但始终建议使用 API 方法。

对于旧式类(python 2,不继承自object),type()没有太大帮助,因此您被迫使用self.__class__

def create_another(self):
    return self.__class__()
于 2013-01-08T06:54:45.043 回答