python - 实例变量不更新
问题描述
我不知道为什么类中的变量没有更新。
class Pile:
def __init__(self, cards):
self.cards = cards
def __str__(self):
result = ' '.join(self.cards)
return result
def __repr__(self):
return f'Pile({self.cards})'
def flip(self):
self.cards.reverse()
return eval(f'Pile({self.cards})')
这是我的代码的一部分。当我在下面运行这段代码时,
cards = Pile(['AH', '3S', 'KC'])
print(cards)
# AH 3S KC
cards
# Pile(['AH', '3S', 'KC'])
cards.flip().flip()
# Pile(['AH', '3S', 'KC'])
print(cards)
我期待'AH 3S KC',但我得到'KC 3S AH'。'KC 3S AH' 是cards.flip()的结果。
我认为cards.flip().flip()这部分不起作用,因为当我写cards.flip()和再次cards.flip()时,这正是我想要的。我不知道这是什么问题。你能解释一下吗?感谢您的阅读。
解决方案
摆脱方法中的eval
功能flip()
。反转方法Pile
中的实例,flip
然后返回它。
代码
class Pile:
def __init__(self, cards):
self.cards = cards
def __str__(self):
result = ' '.join(self.cards)
return result
def __repr__(self):
return f'Pile({self.cards})'
def flip(self):
self.cards.reverse()
return self
cards = Pile(['AH', '3S', 'KC'])
print(cards)
# AH 3S KC
cards
# Pile(['AH', '3S', 'KC'])
cards.flip().flip()
# Pile(['AH', '3S', 'KC'])
print(cards)
输出
推荐阅读
- json - 在 Swift 中迭代 JSON 和存储的指针
- sql - SQL - 及时计算 4 个工作日
- javascript - 如何将编辑按钮更改为保存按钮并添加取消按钮?
- google-cloud-spanner - 使用多个“count distinct”具有巨大的性能影响
- javascript - 无法从 ajax 函数中的 FB.api 访问“名称”以外的详细信息
- javascript - 通过javascript中的div类访问li元素
- c# - 为什么 LINQ 运算符被定义为 IEnumerable 接口上的扩展方法,而不是接口本身的一部分?C#
- linux - HAProxy 透明、iproute2、iptables connmark
- wpf - MouseLeftButtonDown 在样式内的边框上不起作用
- python - Groupby,透视并返回熊猫数据框中的所有列