Crossin的编程教室

标题: pygame飞机大战 [打印本页]

作者: 皮一下    时间: 2018-6-19 01:02
标题: pygame飞机大战
这是创建Bullet类的部分代码:
class Bullet:
    def __init__(self):
        self.x=0
        self.y=-1
        self.image= pygame.image.load('bullet.png').convert()
我有点不理解为什么在__init__()里不加x,y参数。
对这个__init__()的概念还是很模糊即使看了面向对象的课程。
求大佬解救


作者: crossin先生    时间: 2018-6-19 22:05
因为这里初始化时候不需要给它x y,已经设定好是 0 和 -1了
给了x y,那就要 Bullt(0, -1) 这样来创建
作者: 皮一下    时间: 2018-6-23 02:22
crossin先生 发表于 2018-6-19 22:05
因为这里初始化时候不需要给它x y,已经设定好是 0 和 -1了
给了x y,那就要 Bullt(0, -1) 这样来创建 ...

Bullett(0,-1)是指在创建对象的时候吗?
例如 bullet=Bullet9(0,-1)
作者: crossin先生    时间: 2018-6-23 11:04
皮一下 发表于 2018-6-23 02:22
Bullett(0,-1)是指在创建对象的时候吗?
例如 bullet=Bullet9(0,-1)

对的
但Bullt9又是啥……
作者: 皮一下    时间: 2018-6-24 10:08
crossin先生 发表于 2018-6-23 11:04
对的
但Bullt9又是啥……

多打了一个9
作者: 皮一下    时间: 2018-6-24 10:10
crossin先生 发表于 2018-6-23 11:04
对的
但Bullt9又是啥……

多打了一个9
作者: KarvenSun    时间: 2018-9-11 11:58
本帖最后由 KarvenSun 于 2018-9-11 12:00 编辑

__init__()括号里面放的是形参,你下面
self.x=0
self.y=-1
这两行已经是在给x和y赋值了,括号里就不需要形参x和y了
创建实例的时候就直接是Bullet()。

相反,如果你__init__()括号里写了(self,x,y),那么在之后的代码编写里就要给这两个形参赋值,
创建实例的时候就应该是例如Bullet(0,-1)这样了




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5