gpt4 book ai didi

python - Python中定义类时,如何给多个变量赋一个值?

转载 作者:行者123 更新时间:2023-11-28 20:08:11 26 4
gpt4 key购买 nike

我已经开始迈出学习 Python 的第一步,并且正在尝试开始使用类。

到目前为止我有这个简化版本:

class ThingsInTheFridge(object):
def __init__(self):
self.milk = False
self.yogurt = False
self.bread = True
self.umbrella = True

我的课上大约有 30 件事,每件事都被分配为 True 或 False(我已经缩短了这个问题的 list )。

分配它们的最有效方法是什么?

我考虑过这个,但它似乎并没有改善事情,尤其是当列表的大小增加时:

self.milk, self.yogurt = False, False

编辑:我也许应该提到类里面还有其他项目(我省略了它们,因为我认为这无关紧要):

class ThingsInTheFridge(object):
def __init__(self):
self.milk = False
self.yogurt = False
self.bread = True
self.umbrella = True
self.bulb = "maker name"
self.shoes = 2

最佳答案

如果您真的关心运行时效率,那么几乎可以肯定您找错地方了。如果初始化你的成员花费的时间太长(这不太可能......但如果你分析并发现这是热点......),正确的答案是使用 __slots__ ,而不是改变您进行初始化的方式。

如果您关心程序员效率(可读性,以及较小程度上的可写性),您总是可以这样做:

self.milk = self.yogurt = False

如果你想更动态地做事,你可以用 setattr 做这样的事情,但我不推荐它:

class ThingsInTheFridge(object):
false_things = ('bread', 'umbrella')
true_things = ('milk', 'yogurt')
def __init__(self):
for thing in ThingsInTheFridge.false_things:
setattr(self, thing, False)
for thing in ThingsInTheFridge.true_things:
setattr(self, thing, True)

我不推荐它的原因是,如果你需要在这个级别动态地做事,你也可能需要在访问级别是动态的,这意味着你真的应该使用 dictset,如 Lattyware 所述。

你也可以走极端,在类式系统之上为自己构建一个原型(prototype)式 OO 系统,或者创建一个元类,根据类信息等初始化实例,但是,正如这句话的开头所示,那就太过火了。

关于python - Python中定义类时,如何给多个变量赋一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14694050/

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