我有一个长而简单的线性层次结构。我的Grandparent
班级需要_something
为所有孩子(无论多么遥远)提供一个通用方法,但问题是它需要在NextClass
完成后调用 a 。
在这种情况下,NextClass
始终是父级。
这样做是否可以:
class Grandparent(object):
def __init__(self):
pass
def _something(self, NextClass):
print "I did something."
return NextClass()
class Parent(Grandparent):
def __init__(self):
print 'Parent called.'
super(Parent, self).__init__()
class Child(Parent):
def __init__(self):
super(Child, self).__init__()
def _special_something(self):
self._something(self.__bases__[0])
'Parent called.'
'I did something.'
'Parent called.'
我如何更好地传达这里发生的事情?
def _special_something(self):
parent_class = self.__bases__[0]
self._something(parent_class)
这是明确的,但它看起来像一个实例。这打破了命名约定,但我认为更清楚。
def _special_something(self):
ParentClass = self.__bases__[0]
self._something(ParentClass)
“变量”不应该是驼峰式的,但这是一个变量吗?当一切都是对象时,很难说出规则适用于何处。