更新了第19课内容
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 173 KiB |
After Width: | Height: | Size: 594 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 120 KiB |
After Width: | Height: | Size: 260 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 224 KiB |
|
@ -205,7 +205,7 @@ teacher.teach('Python程序设计')
|
|||
stu1.study('Python程序设计')
|
||||
```
|
||||
|
||||
继承的语法是在定义类的时候,在类名后的圆括号中指定当前类的父类。Python语言允许多重继承,也就是说一个类可以有一个或多个父类,关于多重继承的问题我们在后面会有更为详细的讨论。在子类的初始化方法中,我们可以通过`super().__init__()`来调用父类初始化方法,`super`函数是Python内置函数中专门为获取当前对象的父类对象而设计的。从上面的代码可以看出,子类除了可以通过继承得到父类提供的属性和方法外,还可以定义自己特有的属性和方法,所以子类比父类拥有的更多的能力。在实际开发中,我们经常会用子类对象去替换掉一个父类对象,这是面向对象编程中一个常见的行为,也叫做“里氏替换原则”(Liskov Substitution Principle)。
|
||||
继承的语法是在定义类的时候,在类名后的圆括号中指定当前类的父类。如果定义一个类的时候没有指定它的父类是谁,那么默认的父类是`object`类。`object`类是Python中的顶级类,这也就意味着所有的类都是它的子类,要么直接继承它,要么间接继承它。Python语言允许多重继承,也就是说一个类可以有一个或多个父类,关于多重继承的问题我们在后面会有更为详细的讨论。在子类的初始化方法中,我们可以通过`super().__init__()`来调用父类初始化方法,`super`函数是Python内置函数中专门为获取当前对象的父类对象而设计的。从上面的代码可以看出,子类除了可以通过继承得到父类提供的属性和方法外,还可以定义自己特有的属性和方法,所以子类比父类拥有的更多的能力。在实际开发中,我们经常会用子类对象去替换掉一个父类对象,这是面向对象编程中一个常见的行为,也叫做“里氏替换原则”(Liskov Substitution Principle)。
|
||||
|
||||
子类继承父类的方法后,还可以对方法进行重写(重新实现该方法),不同的子类可以对父类的同一个方法给出不同的实现版本,这样的方法在程序运行时就会表现出多态行为(调用相同的方法,做了不同的事情)。多态是面向对象编程中最精髓的部分,当然也是对初学者来说最难以理解和灵活运用的部分,我们会在下一节课中用专门的例子来讲解多态这个知识点。
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ print(card1, card2) # ♠5 ♥K
|
|||
import random
|
||||
|
||||
|
||||
class Poker(object):
|
||||
class Poker:
|
||||
"""扑克"""
|
||||
|
||||
def __init__(self):
|
||||
|
@ -98,7 +98,7 @@ print(poker.cards)
|
|||
定义玩家类。
|
||||
|
||||
```Python
|
||||
class Player(object):
|
||||
class Player:
|
||||
"""玩家"""
|
||||
|
||||
def __init__(self, name):
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
## 第019课:使用PyCharm开发Python应用程序
|
||||
|
||||
坚持学习完前18课的小伙伴应该已经感受到了,随着我们对Python语言的认知在逐步加深,我们写的代码也越来越复杂了。“工欲善其事,必先利其器”,如果希望能够更快更好的写出代码,选择一个称手的开发工具是很有必要的。虽然我们之前推荐大家使用的VS Code已经很好了,但是对于复杂应用程序或者商业项目开发来说,我们还有更好的选择,它就是JetBrains公司出品的PyCharm。
|
||||
|
||||
### PyCharm的下载和安装
|
||||
|
||||
可以在[JetBrains公司的官方网站](<https://www.jetbrains.com/>)找到PyCharm的[下载链接](https://www.jetbrains.com/pycharm/download/),有两个可供下载的版本,一个是社区版(PyCharm CE),一个是专业版(PyCharm Professional)。社区版在Apache许可证下发布,可以免费使用;专业版在专用许可证下发布,需要购买授权后才能使用,但新用户可以试用30天。很显然,专业版提供了更为强大的功能和对企业级开发的各种支持,但是对于初学者来说,社区版已经足够强大和好用了。安装PyCharm只需要直接运行下载的安装程序,然后持续的点击“下一步”就可以啦。下面是我在Windows系统下安装PyCharm的截图。
|
||||
|
||||
![](res/pycharm-installation.png)
|
||||
|
||||
### 首次使用的设置
|
||||
|
||||
第一次使用PyCharm时,会有一个导入设置的向导,如果之前没有使用PyCharm或者没有保存过设置的就直接选择“Do not import settings”进入下一步即可,下面是我在macOS系统下第一个使用PyCharm时的截图。
|
||||
|
||||
![](./res/pycharm-import-settings.png)
|
||||
|
||||
专业版的PyCharm是需要激活的,**强烈建议大家在条件允许的情况下支付费用来支持优秀的产品**,如果不用做商业用途或者不需要使用PyCharm的高级功能,我们可以暂时选择试用30天或者使用社区版的PyCharm。如果你是一名学生,希望购买PyCharm来使用,可以看看[教育优惠官方申请指南](https://sales.jetbrains.com/hc/zh-cn/articles/207154369)。
|
||||
|
||||
![](./res/pycharm-activation.png)
|
||||
|
||||
接下来是选择UI主题,这个可以根据个人喜好进行选择。
|
||||
|
||||
![](./res/pycharm-ui-themes.png)
|
||||
|
||||
再接下来是创建可以在终端(命令行)中使用PyCharm项目的启动脚本,当然也可以直接跳过这一步。
|
||||
|
||||
![](./res/pycharm-create-launcher.png)
|
||||
|
||||
然后可以选择需要安装哪些插件,我们可以暂时什么都不安装等需要的时候再来决定。
|
||||
|
||||
![](./res/pycharm-install-plugins.png)
|
||||
|
||||
最后点击上图右下角的“Start using PyCharm”就可以开始使用PyCharm了。
|
||||
|
||||
### 用PyCharm创建项目
|
||||
|
||||
启动PyCharm之后会来到一个欢迎页,在欢迎页上我们可以选择“Create New Project”(创建新项目)、“Open”(打开已有项目)和“Get from Version Control”(从版本控制系统中检出项目)。
|
||||
|
||||
![](./res/pycharm-welcome.png)
|
||||
|
||||
如果选择了“Create New Project”来创建新项目就会打一个创建项目的向导页。下图所示是PyCharm专业版创建新项目的向导页,可以看出专业版支持的项目类型非常的多,而社区版只能创建纯Python项目(Pure Python),没有这一系列的选项。
|
||||
|
||||
![](./res/pycharm-project-wizard.png)
|
||||
|
||||
接下来,我们要为项目创建专属的虚拟环境,每个Python项目最好都在自己专属的虚拟环境中运行,因为每个项目对Python解释器和三方库的需求并不相同,虚拟环境对不同的项目进行了隔离。在上图所示的界面在,我们可以选择“New environment using Virtualenv”(新建虚拟环境),这里的“Virtualenv”是PyCharm默认选择的创建虚拟环境的工具,我们就保留这个默认的选项就可以了。
|
||||
|
||||
项目创建完成后就可以开始新建各种文件来书写Python代码了,如下图所示。左侧是项目浏览器,可以看到刚才创建的项目文件夹以及虚拟环境文件夹。我们可以在项目上点击鼠标右键,选择“New”,在选择“Python File”来创建Python代码文件,下图中我们创建了两个Python文件,分别是`poker_game.py`和`salary_system.py`。当然,如果愿意,也可以使用复制粘贴的方式把其他地方的Python代码文件复制到项目文件夹下。
|
||||
|
||||
![](./res/pycharm-workspace.png)
|
||||
|
||||
在工作窗口点击鼠标右键可以在上下文菜单中找到“Run”选项,例如要运行`salary_system.py`文件,右键菜单会显示“Run 'salary_system'”选项,点击这个选项我们就可以运行Python代码啦,运行结果在屏幕下方的窗口可以看到,如下图所示。
|
||||
|
||||
![](res/pycharm-run-result.png)
|
||||
|
||||
### 常用操作和快捷键
|
||||
|
||||
PyCharm为写Python代码提供了自动补全和高亮语法功能,这也是PyCharm作为集成开发环境(IDE)的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项(macOS上是在“PyCharm”菜单的“Preferences…”菜单项),这个菜单项会打开设置窗口,可以在此处对PyCharm进行设置,如下图所示。
|
||||
|
||||
![](res/pycharm-settings.png)
|
||||
|
||||
PyCharm的菜单项中有一个非常有用的“Code”菜单,菜单中提供了自动生成代码、自动补全代码、格式化代码、移动代码等选项,这些功能对开发者来说是非常有用的,大家可以尝试使用这些菜单项或者记住它们对应的快捷键,例如在macOS上,格式化代码这个菜单项对应的快捷键是`alt+command+L`。除此之外,“Refactor”菜单也非常有用,它提供了一些重构代码的选项。所谓重构是在不改变代码执行结果的前提下调整代码的结构,这也是资深程序员的一项重要技能。还有一个值得一提的菜单是“VCS”,VCS是“Version Control System”(版本控制系统)的缩写,这个菜单提供了对代码版本管理的支持。版本控制的知识会在其他的课程中为大家讲解。
|
||||
|
||||
下表列出了一些PyCharm中特别常用的快捷键,当然如果愿意,也可以通过设置窗口中“Keymap”菜单项自定义快捷键,PyCharm本身也针对不同的操作系统和使用习惯对快捷键进行了分组。
|
||||
|
||||
| 快捷键 | 作用 |
|
||||
| --------------------------------------------- | -------------------------------------- |
|
||||
| `command + j` | 显示可用的代码模板 |
|
||||
| `command + b` | 查看函数、类、方法的定义 |
|
||||
| `ctrl + space` | 万能代码提示快捷键,一下不行按两下 |
|
||||
| `command + alt + l` | 格式化代码 |
|
||||
| `alt + enter` | 万能代码修复快捷键 |
|
||||
| `ctrl + /` | 注释/反注释代码 |
|
||||
| `shift + shift` | 万能搜索快捷键 |
|
||||
| `command + d` / `command + y` | 复制/删除一行代码 |
|
||||
| `command + shift + -` / `command + shift + +` | 折叠/展开所有代码 |
|
||||
| `F2` | 快速定位到错误代码 |
|
||||
| `command+ alt + F7` | 查看哪些地方用到了指定的函数、类、方法 |
|
||||
|
||||
> **说明**:Windows系统下如果使用PyCharm的默认设置,可以将上面的`command`键换成`ctrl`键即可,唯一的例外是`ctrl + space`那个快捷键,因为它跟Windows系统切换输入法的快捷键是冲突的,所以在Windows系统下没有与之对应的快捷键。
|
||||
|
||||
### 简单的总结
|
||||
|
||||
PyCharm很强大,尤其是专业版的PyCharm,建议大家一边使用一边总结,这样才会用到越来越顺手,工作效率也会随之而提升。
|
||||
|
||||
> **温馨提示**:学习中如果遇到困难,可以加**QQ交流群**询问。
|
||||
>
|
||||
> 付费群:**789050736**,群一直保留,供大家学习交流讨论问题。
|
||||
>
|
||||
> 免费群:**151669801**,仅供入门新手提问,定期清理群成员。
|