gpt4 book ai didi

python - Python 中特定于实例的字段的成本与 yield

转载 作者:行者123 更新时间:2023-11-28 16:43:54 25 4
gpt4 key购买 nike

<分区>

所以,Python 很乐意让我编写这样的代码,

class A(): pass

a1 = A()
a2 = A()
a1.some_field = 5
a2.other_field = 7

现在,当涉及到将对象传递给方法时,我已经学会停止担心并喜欢鸭子类型(duck typing)。我承认允许一个类的不同实例具有不同的字段有时会很方便。

我的问题是,我正在与一个由 4 名开发人员组成的团队构建一个中型 Web 应用程序,我不禁认为向对象添加任意字段会使推断应用程序状态变得更加困难.

我想我的问题是:向对象添加任意字段的做法只是 duck typing 的自然扩展,还是应该避免?

这是一个具体的例子:

class Visitor():
def __init__(self, name, address, dob):
self.name = name
self.address = address
self.dob = dob

def summarize_visits(visits):
self.most_recent_visit = find_most_recent_visit(visits)

在这种情况下,处理 Visitor 对象的代码必须意识到 visitor.most_recent_visit 将引发 AttributeError 的事实,除非之前有人对同一对象调用了 summarize_visits。看起来它会导致很多 if hasattr(...) block ,不是吗?

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