python中未绑定方法的继承和访问父类
我有一个未绑定方法的类,里面有一个静态类:python中未绑定方法的继承和访问父类,python,inheritance,Python,Inheritance,我有一个未绑定方法的类,里面有一个静态类: class ClassA(): class Foo(): pass def getFoo(): return ???.Foo 现在,如果我从ClassA继承了一个ClassB,那么如何让ClassB.getFoo()返回ClassB.Foo而不显式实现ClassB.getFoo()?返回super().Foo不起作用,写入ClassA.Foo显然也不起作用。您的getFoo应该是一个classmeth
class ClassA():
class Foo():
pass
def getFoo():
return ???.Foo
现在,如果我从ClassA继承了一个ClassB,那么如何让ClassB.getFoo()返回ClassB.Foo而不显式实现ClassB.getFoo()?返回
super().Foo
不起作用,写入ClassA.Foo
显然也不起作用。您的getFoo
应该是一个classmethod:
class ClassA():
class Foo():
pass
@classmethod
def getFoo(cls):
return cls.Foo
类方法将其类作为第一个参数传递,类似于实例方法将实例作为第一个参数传递给实例的方式。当您将ClassA子类化时,将传递适当的类。您的
getFoo
应该是一个classmethod:
class ClassA():
class Foo():
pass
@classmethod
def getFoo(cls):
return cls.Foo
类方法将其类作为第一个参数传递,类似于实例方法将实例作为第一个参数传递给实例的方式。当您将ClassA子类化时,会传递适当的类。我想补充一下:除了@Ned Batchelder的答案之外,您还可以使用静态方法来实现类似的目标
class ClassA():
class Foo():
def fooTest(self):
print("Hello from {}!".format(self.__name__))
@staticmethod
def getFoo():
return ClassA.Foo
class ClassB(ClassA):
pass
并通过以下方式进行测试:
>>> Foo = ClassB.getFoo()
>>> foo = Foo()
>>> foo.fooTest()
Hello from Foo!
这向我展示了python语言的魅力——通常有多种方法可以解决同一个问题 我想补充一下自己的想法:除了@Ned Batcheld的答案之外,您还可以使用静态方法来实现类似的目标
class ClassA():
class Foo():
def fooTest(self):
print("Hello from {}!".format(self.__name__))
@staticmethod
def getFoo():
return ClassA.Foo
class ClassB(ClassA):
pass
并通过以下方式进行测试:
>>> Foo = ClassB.getFoo()
>>> foo = Foo()
>>> foo.fooTest()
Hello from Foo!
这向我展示了python语言的魅力——通常有多种方法可以解决同一个问题