gpt4 book ai didi

oop - 根据初始化参数更改实例化的类

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:33 24 4
gpt4 key购买 nike

根据 Python 中初始化函数的参数改变实例化类的最佳方法是什么?例如,对于四叉树,如果元素数量低于某个阈值,您希望返回叶子而不是分支。另一个例子是一个图形,它可以由邻接矩阵或列表支持,具体取决于它用什么数据初始化。

我能想到的最明显的方法是使用工厂函数来确定应该初始化相关类的哪个子类。有没有更好的,更pythonic的怎么办?

在这个问题的一个特别棘手的例子中,我有一个可以由任何类型的序列或字典类型支持的数据结构。使用的支持/子类取决于它所提供的数据类型。在静态类型语言中,我可以简单地使用函数重载,但在 Python 中,我只能显式调用 isinstance,或者使用一堆“try...catch AttributeError”。这两个似乎都是非常糟糕的做法。使用上面的工厂功能解决方案,我没有看到一个干净的方法来做到这一点。 (我意识到这是一个不同的问题,但这是一个让我试图解决这个问题的大案例。)

最佳答案

您可以使用 __new__,但工厂函数是不错的 pythonic 方式。

关于oop - 根据初始化参数更改实例化的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5521463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com