gpt4 book ai didi

python - bool 值不变

转载 作者:太空狗 更新时间:2023-10-30 02:13:01 27 4
gpt4 key购买 nike

def shoot(self, limb):
if not limb:
pass
else:
limb = False


print Joe.body.head #prints out true
Bob.gun.shoot(Joe.body.head) # should print out false
print Joe.body.head #prints out true (???)

我是 Python 的新手,正在制作一个游戏作为 LPTHW 的一部分。我的拍摄功能应该通过将其设置为 false 来禁用肢体,但它根本不会编辑 bool 值。考虑到我可以直接设置 bool 值,这似乎有点多余,但是拍摄功能将计算的不仅仅是更改 bool 值。将不胜感激。

最佳答案

Python 按值传递其对象引用,因此通过执行 limb = False,您将一个值为 False 的新对象引用分配给参数 limb ,不修改参数原来持有的对象。 (好吧,从技术上讲,它不是"new"引用,因为我相信 TrueFalseNone 都是 Python 中的单例。)

不过,这里有一些可行的方法。

def shoot(self, other, limbstr):
try:
if getattr(other, limbstr): # Levon's suggestion was a good one
setattr(other, limbstr, False)
except AttributeError:
pass # If the other doesn't have the specified attribute for whatever reason, then no need to do anything as the bullet will just pass by

Bob.gun.shoot(Joe.body, 'head')

关于python - bool 值不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834833/

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