gpt4 book ai didi

python - 在Python中是否可以使类的一组方法依赖于构造函数的输入?

转载 作者:行者123 更新时间:2023-11-30 23:34:53 26 4
gpt4 key购买 nike

我正在读这篇文章Genshi Tutorial并查看以下示例:

from formencode import Schema, validators

class LinkForm(Schema):
username = validators.UnicodeString(not_empty=True)
url = validators.URL(not_empty=True, add_http=True, check_exists=False)
title = validators.UnicodeString(not_empty=True)

据我了解这个例子,我们创建一个继承Schema类的新类,该类包含三个方法:usernameurl标题。但是,我不确定最后一个,因为之前我只看到使用 def 创建的方法。

无论如何,我的问题不是这个。我想知道是否可以使类的定义动态化。例如,有时我不希望 urltitle 出现在类中。这似乎是可行的(我只是使用 if 并仅在满足 if-statement 的情况下才为 url 赋值。

但是如果我事先不知道我希望表单中包含哪些字段怎么办?例如,现在我有用户名、网址和标题。但如果稍后我想要cityage 该怎么办?我可以做这样的事情吗:

from formencode import Schema, validators

class LinkForm(Schema):

__init__(self, fields):
for field in fields:
condition = fields[field]
field = validators.UnicodeString(condition)

我认为这不会起作用。这种情况有解决办法吗?

最佳答案

是的,您可以动态向实例添加方法。不,你不能做你想做的事。

您可以将方法绑定(bind)到初始化程序中的实例。不幸的是你有descriptors这些必须绑定(bind)到类。

关于python - 在Python中是否可以使类的一组方法依赖于构造函数的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17780493/

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