gpt4 book ai didi

python - 过度使用 mixin 是邪恶的,有哪些替代解决方案?

转载 作者:太空狗 更新时间:2023-10-29 21:17:54 25 4
gpt4 key购买 nike

有时使用具有多重继承的mixin 可以帮助我们提高代码的可重用性。

比如下面的设计

class FollowableMixin(object):
def get_followers(self):
...
...

class User(FollowableMixin):
...

可能比简单地将 get_followers 添加到 User 更好地重用:

class User(object):
def get_followers(self):
...
...

因为稍后我们可能会考虑支持其他可关注的实体,这些实体是 get_followers 的潜在客户:

class BookStore(FollowableMixin):
...

但是,如果过度使用此模式,代码可能会变得过于复杂。

class User(FollowableMixin, RunnableMixin, FlyableMixin, WhatMixin ...):
...

所有这些 mixin 类向您的类注入(inject)属性和方法,理解您的代码变得非常困难。例如,你不知道你正在调用的方法是从哪里来的,而这个方法可能又包含了对另一个 mixin 中方法的调用......

我应该怎么做才能简化这个程序?

最佳答案

有时,如果经常一起使用,将相关功能收集到一个类中会有所帮助。

class FooMixin(FollowableMixin, RunnableMixin):
pass

然后当你开始使用它时,你只有一两个直接基类,而不是很多。

显然,只有在有意义的情况下才应该这样做——它可能会被滥用。在不了解您的具体示例的情况下,很难知道在您的情况下这样做是否有意义。

关于python - 过度使用 mixin 是邪恶的,有哪些替代解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3797446/

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