【发布时间】:2021-01-01 20:28:29
【问题描述】:
每次调用 'setattr' 魔术方法时,由于某种原因,它都会导致属性错误。我收到一个属性错误,说“rect”变量不存在,但它已在类中明确定义。
import pygame as pg
class Block:
blocks = {}
id_ = 1
def __init__(self, surface, name=None, color=[0] * 3, width=0):
self.surface = surface
self.name = (name if name else Block.id_)
self.color = color
self.width = width
self.rect = pg.Rect((0, 0), [20] * 2)
self.block = self.make_block()
pg.draw.polygon(*self.block)
Block.blocks[self.name] = self
if not name:
Block.id_ += 1
def make_block(self):
point_1 = self.rect.topleft
point_2 = (self.rect.topleft[0], self.rect.topleft[1] + self.rect.size[1])
point_3 = (point_2[0] + self.rect.size[0], point_2[1])
point_4 = (point_3[0], point_1[0])
return [self.surface, self.color, (point_1, point_2, point_3, point_4), self.width]
def __setattr__(self, name, value):
pass
Block(pg.Surface((20, 20)))
【问题讨论】:
-
但是你忽略了它什么都不做。所以它实际上并没有定义......
-
错误是:AttributeError: 'Block' object has no attribute 'rect' [Finished in 0.1s with exit code 1]
标签: python-3.x pygame setattr