python - 这些子类定义有何不同?

标签 python python-2.7 python-3.x class

有人可以解释一下从BaseClass派生的以下类定义之间有什么区别,以及在什么情况下它们的定义方式很重要:

class BaseClass(object):
    def __init__(self):
        # ...

    def as_dict(self):
        # ...


class SomeClass(BaseClass):

    def as_dict(self):
        # Does this somehow change the method compared to 'AnotherClass.as_dict()' below
        return super(SomeClass, self).as_dict()


class AnotherClass(BaseClass): pass

SomeOtherClass = BaseClass

最佳答案

由于您向 SomeClass 添加了一个 as_dict 方法,其中包含单个 super 调用,因此没有区别该类的最终行为。总体而言,您添加了一些不必要的函数调用,这一事实有所不同。

AnotherClass 的行为与 SomeClass 类似,因为 SomeClassas_dict 中没有做任何不同的事情。它照常继承BaseClass的方法。

SomeOtherClass 只是 BaseClass另一个名称,您不会在那里创建子类关系,只是附加另一个名称,您可以通过该名称引用该类。

关于python - 这些子类定义有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43090374/

相关文章:

python - matplotlib 和阶乘函数

python - 将自定义函数与 sympy 集成

python - argparse "compulsory"可选参数

python - 有没有一种方法可以通过使用opencv/dlib和直播视频来获取额头(边界框)的区域

python - 如何在python中实现线程socket.recv()?

python - 使用 beautiful soup 抓取数据时网页表结构出现问题

python-2.7 - 在python中的Twython异常中获取错误代码

python - 使用 beautifulsoup 提取嵌套项目

python - 如何保存 GridSearchCV xgboost 模型?

python-3.x - Flask jsonify 是否支持 UTF-8?