python - 在 python 中,super() 总是在方法中首先被调用。是否存在应该稍后调用的情况?

标签 python super

有没有在调用 super() 之前需要做一些处理的情况?

这是一个人为的例子。有更好的例子吗?这被认为是pythonic吗?

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)

最佳答案

有时您需要在调用 super() 之前验证参数:

class UpperBase(Base):
    def __init__(self, name):
        if not name_valid(name):
            raise ValueError()
        super(UpperBase, self).__init__(name)

我不明白为什么这不是pythonic,因为它是最简单的方法,而且很简单。 另外,请阅读@JHSaunders 的评论,他说得很好。

关于python - 在 python 中,super() 总是在方法中首先被调用。是否存在应该稍后调用的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5634221/

相关文章:

python - 根据另一个数据框中的值生成一个新列

R 中的 Python 列表理解?

python - 如何在 Python 中使用 WSDL (SOAP) Web 服务?

python - 无法使用 BeautifulSoup 获取 span 属性的文本

强制在构造函数中调用 super() 的子类的 Java 解决方法?

Java - super 调用问题

python - 如何从指定位置的二进制文件中读取一个且仅一个字节?

python - 我可以在 Python 2.5.6 中使用 Python 3 super() 吗?

javascript - JavaScript 中的继承和 Super

java - 我如何确保在 child 中调用 super 方法?