首页 / PYTHON / 如何复制类变量 – Python
如何复制类变量 – Python
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何复制类变量 – Python,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1830字,纯文字阅读大概需要3分钟。
内容图文
![如何复制类变量 – Python](/upload/InfoBanner/zyjiaocheng/726/9fb9595d2fbc4d79929bcac89e938eef.jpg)
我正在制作一款使用4×4板的游戏,我想检查卡是否已被按下.
为此,我使用两块板.一个将用于计算(我要复制的变量)和另一个将用于在游戏中显示(原始板称为状态).
我有以下代码片段,我想复制TreasureHuntGrid的状态变量,并在同一个类的另一个函数中使用它.
它应该独立于复制的变量,因此状态变量的更改不会影响计算变量.
我认为我在这里的代码处理状态和计算变量,因为它是相同的.
我怎样才能独立对待他们?
class TreasureHuntGrid(GridLayout):
Finish.shuffle()
status = ListProperty(Finish.board) #Return a random lists of lists with 1 and -1
calculations = status
def __init__(self, *args, **kwargs):
super(TreasureHuntGrid, self).__init__(*args, **kwargs)
def button_pressed(self, button):
if self.calculations[row][column] != 2: #Check if it is pressed or not
button.text = {-1: Finish.surrounded(row, column), 1: 'X'}[self.sta$
button.background_color = colours[self.status[row][column]]
self.calculations[row][column] = 2
解决方法:
Python中的所有内容都是命名空间.在类定义中定义status = …时,类对象将获得一个新属性:TreasureHuntGrid.status.您希望将状态和计算属性放入对象命名空间.为此,只需在__init __()中定义self.status和self.calculations:
def __init__(self, *args, **kwargs):
super(TreasureHuntGrid, self).__init__(*args, **kwargs)
status = ListProperty(Finish.board) #Return a random lists of lists with 1 and -1
calculations = status
另外,请注意,只有在导入模块时才会调用Finish.shuffle()一次.如果这不是您想要的,那么也将该行代码放入构造函数中.
您可能从Python确定self.status意味着什么的方式中产生了混乱.如果您正在读取该字段,则self.status将重定向到父命名空间(如果它未在对象的命名空间中定义:TreasureHuntGrid.status).如果您要分配给self.status并且它不存在,则会创建它.要了解我的意思,您可能需要研究以下示例:
>>> class A:
... a = 1
...
>>> print A.a
1
>>> obj = A()
>>> print obj.a
1
>>> obj.a = 2
>>> print A.a
1
>>> print obj.a
2
如果您使用的是Python 3,请在print的参数周围加上括号.
内容总结
以上是互联网集市为您收集整理的如何复制类变量 – Python全部内容,希望文章能够帮你解决如何复制类变量 – Python所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。