我有一个很长但很简单的线性层次结构。我的Grandparent
课程需要为所有孩子(无论多远)提供一个通用的_something
方法,但事情是它需要在完成后调用NextClass
。
在这种情况下,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)
“变量”不应该是驼峰式的,但这是变量吗?当一切都是一个对象时,很难说出规则的适用范围。