gpt4 book ai didi

python - __init__ 值与实例化值

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:18 24 4
gpt4 key购买 nike

我是python和kivy的新手,一直卡在理解__init__变量实例化,我的代码如下:

from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout

spots={}

class spot(Button):
'''
classdocs
'''
def __init__(self, **kwargs):
'''
Constructor
'''
super(spot,self).__init__(**kwargs)
self.ismine=False
self.text="X"

class game(BoxLayout):

def attachtogrid(self):
self.m.clear_widgets()
spots.clear()
for r in range(0,25):
for c in range(0,25):
id=str(r)+","+str(c)
spots[id]=id
self.m.add_widget(spot(text=id))

我的问题是,虽然我将 id 值传递给文本属性(代码的最后一行),但我仍然将“X”作为文本,这是 spot 类中的默认文本;如果我删除默认文本(self.text="X") 来自类 ID 文本正在工作。

能否请您澄清上述默认值和实例化差异。谢谢。

最佳答案

当您传递值 id 时到 key text ,它将作为一对 key:value 存储在字典 kwargs 中在__init__里面.

因此,您可以作为 1

访问它
kwargs['text']

但是,如果用户没有传递参数 text ,上面的行(试图访问 key text )将引发 KeyError ,因为该 key 不存在。为了解决这个问题,您可以使用 dictionary.get(key, default)方法:

self.text = kwargs.get('text', 'X')

它不会引发异常,而是返回默认值。


1:这是获取与字典中的键对应的值的语法。如果字典中不存在键,它将引发错误。

关于python - __init__ 值与实例化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445824/

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