1

我有一个长而简单的线性层次结构。我的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)

“变量”不应该是驼峰式的,但这是一个变量吗?当一切都是对象时,很难说出规则适用于何处。

4

0 回答 0