1.参数*表示接收的为元组;**表示接收的为字典
2.导入: import module_name(导入模块)
import module_name as mn(指定别名)
from module_name import function_1,function_2,function_3(导入模块的函数)
from module_name import function_name as fn(函数指定别名)
from module_name import *(导入所有函数)
3.给形参指定默认值时,等号两边不要有空格
4.根据约定,首字母大写的名称指的是类
5.类中的函数称为方法 def __init__(self):
6.每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法
7.以self为前缀的变量都可供类中的所有方法使用,还可以通过类的任何实例来访问这些变量。像这样可通过实例访问的变量称为属性。
8.突然无法激活pycharm。运用了新的网址:https://jetlicense.nss.im/
http://idea.liyang.io
http://50.112.79.106:81
http://jishujia.wang
9.学习12.6.5时,有两行代码:P222页
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center += self.ai_settings.ship_speed_factor
if self.moving_left and self.rect.left > 0:
self.center -= self.ai_settings.ship_speed_factor
书中讲述的是,self.rect.right返回飞船外接矩形的右边缘的x坐标,如果这个值小于self.screen_rect.right的值,就说明飞船未触及屏幕右边缘;如果rect的左边缘的x坐标大于零,就说明飞船未触及屏幕左边缘。
所以我想试一下这两行代码有什么区别,我将第一句也改为了if self.moving_right and self.rect.right < 0,但是运行后,会发现,当移动到最左边时,就会不动。
后来仔细想了一下才发现,限制应该是x坐标小于最右边的窗口边缘,于是将<0改为了<1200(我自己设置的窗口宽度)。于是程序运行正确;
同理,if self.moving_left and self.rect.left > 0:这里的>0也只是知道左边框肯定是以0来开始的,所以用了简单写法,实际应该为:> self.screen_rect.left
10. 1. super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,产生了一个super对象;
2. super类的初始化函数并没有做什么特殊的操作,只是简单记录了类类型和具体实例;
3. super(B, self).func的调用并不是用于调用当前类的父类的func函数;
4. Python的多继承类是通过mro的方式来保证各个父类的函数被逐一调用,而且保证每个父类函数只调用一次(如果每个类都使用super);
5. 混用super类和非绑定的函数是一个危险行为,这可能导致应该调用的父类函数没有调用或者一个父类函数被调用多次。
11. 屏幕宽度储存在ai_settings.screen_width中,但是需要在屏幕两边都留下一定的边距,把它设置为外星人的宽度。因为有两个边距,所以用放置外星人的水平空间为屏幕宽度减去外星人宽度的两倍:
available_space_x = ai_settings.screen_width - (2 * alien_width)
2.导入: import module_name(导入模块)
import module_name as mn(指定别名)
from module_name import function_1,function_2,function_3(导入模块的函数)
from module_name import function_name as fn(函数指定别名)
from module_name import *(导入所有函数)
3.给形参指定默认值时,等号两边不要有空格
4.根据约定,首字母大写的名称指的是类
5.类中的函数称为方法 def __init__(self):
6.每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法
7.以self为前缀的变量都可供类中的所有方法使用,还可以通过类的任何实例来访问这些变量。像这样可通过实例访问的变量称为属性。
8.突然无法激活pycharm。运用了新的网址:https://jetlicense.nss.im/
http://idea.liyang.io
http://50.112.79.106:81
http://jishujia.wang
9.学习12.6.5时,有两行代码:P222页
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center += self.ai_settings.ship_speed_factor
if self.moving_left and self.rect.left > 0:
self.center -= self.ai_settings.ship_speed_factor
书中讲述的是,self.rect.right返回飞船外接矩形的右边缘的x坐标,如果这个值小于self.screen_rect.right的值,就说明飞船未触及屏幕右边缘;如果rect的左边缘的x坐标大于零,就说明飞船未触及屏幕左边缘。
所以我想试一下这两行代码有什么区别,我将第一句也改为了if self.moving_right and self.rect.right < 0,但是运行后,会发现,当移动到最左边时,就会不动。
后来仔细想了一下才发现,限制应该是x坐标小于最右边的窗口边缘,于是将<0改为了<1200(我自己设置的窗口宽度)。于是程序运行正确;
同理,if self.moving_left and self.rect.left > 0:这里的>0也只是知道左边框肯定是以0来开始的,所以用了简单写法,实际应该为:> self.screen_rect.left
10. 1. super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,产生了一个super对象;
2. super类的初始化函数并没有做什么特殊的操作,只是简单记录了类类型和具体实例;
3. super(B, self).func的调用并不是用于调用当前类的父类的func函数;
4. Python的多继承类是通过mro的方式来保证各个父类的函数被逐一调用,而且保证每个父类函数只调用一次(如果每个类都使用super);
5. 混用super类和非绑定的函数是一个危险行为,这可能导致应该调用的父类函数没有调用或者一个父类函数被调用多次。
11. 屏幕宽度储存在ai_settings.screen_width中,但是需要在屏幕两边都留下一定的边距,把它设置为外星人的宽度。因为有两个边距,所以用放置外星人的水平空间为屏幕宽度减去外星人宽度的两倍:
available_space_x = ai_settings.screen_width - (2 * alien_width)