在Python中,super()总是优先在方法中调用。有没有情况应该稍后调用?
有没有一些情况是你想在调用super()之前先做一些处理的呢?
这个例子有点牵强。有没有更好的例子呢?这样做算不算是符合Python的风格呢?
class Base(object):
def __init__(self, name):
print "Base %s created" % name
self._name = name
class UpperBase(A):
""" Similar to base but the name is in uppercase. """
def __init__(self, name):
name = name.upper()
super(UpperBase, self).__init__(name)
1 个回答
54
有时候,在调用 super()
之前,你需要先检查一下参数是否正确:
class UpperBase(Base):
def __init__(self, name):
if not name_valid(name):
raise ValueError()
super(UpperBase, self).__init__(name)
我觉得这样做没有什么不对,因为这是最简单直接的方法。还有,看看 @JHSaunders 的评论,他提到的观点也很不错。