最近我第一次尝试使用类和__init__
时就陷入了困境,这对我来说是很新的。
我写了一个叫做box的类,它有一个__init__
,其中包含坐标和状态,即True或False。
因为我不知道更好,所以我将每个Box(x, y, state)
调用都用f'
分配给了一个自动变量。然后,我调用了Box.create()
方法,该方法是在类中使用相同的f'
变量定义的。
现在的问题是,当变量Box1and1
已经存在时,我希望它调用状态为False的Box(x, y, state)
来更改框。
但是我无法检查变量是否已经存在,因为我无法轻松访问自动变量。当我尝试使用try-except进行操作时,我意识到f'
变量只是变成了一个没有f'=10
的字符串。如果我要说f'=10
,我将创建一个新的变量,而不是计划。
那么如何检测位置1, 1
处的框是否已经绘制?也许比自动变量更好,或者使用tryexcept或if语句回答如何访问自动变量的答案。
代码如下:
class Box:
def __init__(self, x, y, state):
self.x = x
self.y = y
self.state = state
def create(self):
if self.state:
c.create_rectangle(self.x * 100, self.y * 100, self.x * 100 + 100, self.y * 100 + 100, fill="yellow")
print(str(self.state) + "Yellow")
elif not self.state:
c.create_rectangle(self.x * 100, self.y * 100, self.x * 100 + 100, self.y * 100 + 100, fill="red")
print(str(self.state) + "red")
def amenak(x,y):
f'box{str(x) + "und" + str(y)}'
def getcords(self):
cords = e.get()
cords = cords.replace(",", "")
cords = tuple(cords)
x, y = cords
x = int(x)
y = int(y)
try:
amenak(x,y)
except NameError:
#print(f'box{str(x)+"und"+str(y)}'+"test1")
exec(f'box{str(str(x) + "und" + str(y))}= Box(x,y, True)')
exec(f'box{str(x) + "und" + str(y)}.create()')
else:
exec(f'box{str(x)+"und"+str(y)}= Box(x,y, False)')
exec(f'box{str(x) + "und" + str(y)}.create()')