我想在一个类中使用自变量,并在另一个已经拥有自己的自变量的类中使用它们如何执行此操作。有些代码可以提供帮助。
class A():
self.health = 5
class B(): # This class already has a self function
for sprite in all_sprites:
if pygame.sprite.collide_circle(self, sprite):
self.collide = True
self.health -= 0.1
答案 0 :(得分:0)
你是误会。 self
仅是内部参考。在课堂上,您可以参考self
。否则,您直接引用sprite
对象,
class A():
self.health = 5
class B(): # This class already has a self function
for sprite in all_sprites:
if pygame.sprite.collide_circle(self, sprite):
sprite.collide = True
sprite.health -= 0.1
答案 1 :(得分:0)
以下代码可能有助于解释如何在课程中使用self
。请注意第45行,self
传递给精灵类的collide
方法。在类的内部,如果需要,您可以将self
(表示您正在使用的当前实例)传递给任何其他实例方法或函数。
import math
import random
def main():
b = B(5, 5, 2)
print('Health =', b.health)
b.collide_sprites()
print('Health =', b.health)
class Sprite:
def __init__(self, x, y, radius):
self.x = x
self.y = y
self.radius = radius
def collide(self, other):
middle_distance = math.hypot(self.x - other.x, self.y - other.y)
edge_margin = self.radius + other.radius
return middle_distance < edge_margin
class A(Sprite):
def __init__(self, x, y, radius):
super().__init__(x, y, radius)
self.health = 5
class B(A):
def __init__(self, x, y, radius):
super().__init__(x, y, radius)
self.all_sprites = [A(
random.randrange(10),
random.randrange(10),
random.randint(1, 4)
) for _ in range(50)]
self.collide = False
def collide_sprites(self):
for sprite in self.all_sprites:
if sprite.collide(self):
self.collide = True
self.health -= 0.1
if __name__ == '__main__':
main()