Python中生成器模式的问题
我想从同一个基类Fish创建一个用户Fish和敌人Fish。但是,正如我所了解的,当我尝试更改敌方鱼类属性时,使用下面的代码,我的用户鱼类属性最终也会更改:Python中生成器模式的问题,python,pygame,builder,Python,Pygame,Builder,我想从同一个基类Fish创建一个用户Fish和敌人Fish。但是,正如我所了解的,当我尝试更改敌方鱼类属性时,使用下面的代码,我的用户鱼类属性最终也会更改: #基类 类鱼(对象): 定义初始化(self,type=“None”,大小=(1,1),位置=(1,1),速度=1, 方向=1): self.type=type self.size=大小 self.position=位置 自身速度=速度 方向 def牵引(自): 引发未实现的错误 #用户鱼生成器:生成新的用户鱼 类创建用户鱼(鱼): Fis
#基类
类鱼(对象):
定义初始化(self,type=“None”,大小=(1,1),位置=(1,1),速度=1,
方向=1):
self.type=type
self.size=大小
self.position=位置
自身速度=速度
方向
def牵引(自):
引发未实现的错误
#用户鱼生成器:生成新的用户鱼
类创建用户鱼(鱼):
Fish.type=“用户”
Fish.size=(150100)
Fish.position=(20200)
def牵引(自):
pygame.draw.ellipse(DISPLAYSURF,蓝色,(Fish.position,Fish.size))
#敌人鱼制造者:生成新的敌人鱼
类创建敌人鱼(鱼):
Fish.type=“敌人”
Fish.size=(150100)
鱼的位置=(750200)
def牵引(自):
pygame.draw.ellipse(DISPLAYSURF,蓝色,(Fish.position,Fish.size))
#我在运行游戏前打的电话片段
Player=创建用户鱼()
Player.draw()
当我更改类
创建敌人鱼
下的Fish.position
时,这也会更改我的用户
鱼的Fish.position
。提示?对象Fish
中的属性,如self.type
,self.size
是,但是类Fish
中还有其他设置,如Fish.type
,Fish.size
。。。(这些属性的分配分别在after类Create\u User\u Fish
中完成。类属性在类Fish
中只存在一次,第二次写入将覆盖第一次写入
您必须分别向类Create\u User\u Fish
中添加构造函数Create\u four\u Fish
,并对继承类的构造函数Fish
执行一个操作,以设置实例属性。使用方法绘图中的实例属性:
类创建用户鱼(鱼):
定义初始化(自):
super().uuuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
def牵引(自):
pygame.draw.ellipse(DISPLAYSURF,蓝色,(self.position,self.size))
类创建敌人鱼(鱼):
定义初始化(自):
super().uuuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
def牵引(自):
pygame.draw.ellipse(DISPLAYSURF,蓝色,(self.position,self.size))
Fish
是Fish
。实际上,在Create\u User\u Fish
和Create\u敌军\u Fish
中都没有设置类级属性。这些简单的assgnment语句修改了Fish
类属性,不会影响它们在所有类块中执行的类名称空间。@juanpa.arrivillaga哦,我明白你的意思了。我已经改变了。