【Python基础】lpthw - Exercise 40 模块、类和对象
一、 模块(module)
模块中包含一些函数和变量,在其他程序中使用该模块的内容时,需要先将模块import进去,再使用.操作符获取函数或变量,如
# This goes in mystuff.py
def apple():
print("This is an apple.") pear = "This is a pear."
import mystuff as ms
ms.apple() print(ms.pear)
输出为
This is an apple.
This is a pear.
二、 类(class)
类与模块的比较:使用类可以重复创建很多东西出来(后面会称之为实例化),且这些创建出来的东西之间互不干涉。而对于模块来说,一次导入之后,整个程序就只有这么一份内容,更改会比较麻烦。
一个典型的类的例子:
class Mystuff(object):
def __init__(self):
self.tangerine = "And now a thousand years between"
def apple(self):
print("I AM CLASSY APPLES!")
注意体会其中的object、__init__和self。
三、 对象(object)
对象是类的实例化,类的实例化方法就是像函数一样调用一个类。
thing = Mystuff() # 类的实例化
thing.apple()
print(thing.tangerine)
详解类的实例化过程:
- python查找Mystuff()并知道了它是你定义过的一个类。
- python创建一个新的空对象,里面包含了你在该类中用def指定的所有函数。
- 检查用户是否在类中创建了__init__函数,如果有,则调用这个函数,从而对新创建的空对象实现初始化。
- 在Mystuff的__init__函数中,有一个叫self的函数,这就是python为你创建的空对象,你可以对它进行类似模块、字典等的操作,为它设置一些变量。
- 此处将self.tangerine设置成了一段歌词,这样就初始化了该对象。
- 最后python将这个新建的对象赋给一个叫thing的变量,以供后面的使用。
四、获取某样东西里包含的东西
字典、模块和类的使用方法对比:
# dict style
mystuff['apple'] # module style
# import mystuff
mystuff.apple() # class style
thing = mystuff()
thing.apple()
五、第一个类的例子
class Song(object):
def __init__(self,lyrics):
self.lyrics = lyrics
def sing_me_a_song(self):
for line in self.lyrics:
print(line)
happy_bday = Song(["Happy birthday to ~ you ~",
"Happy birthday to ~ you ~",
"Happy birthday to ~ you ~~",
"Happy birthday to you ~~~"])
bulls_on_parade = Song(["They rally around the family",
"With pockets full of shells"])
happy_bday.sing_me_a_song()
bulls_on_parade.sing_me_a_song()
输出
Happy birthday to ~ you ~
Happy birthday to ~ you ~
Happy birthday to ~ you ~~
Happy birthday to you ~~~
They rally around the family
With pockets full of shells
- 为什么创建__init__等函数时要多加一个self变量?
因为如果不添加self,lyrics = “blahblahblah”这样的代码就会有歧义,它指的既可能是实例的lyrics属性,也可能是一个叫lyrics的局部变量。有了self.lyrics = "blahblahblah",就清楚的知道这指的是实例的属性lyrics。
【Python基础】lpthw - Exercise 40 模块、类和对象的更多相关文章
- 笨办法40模块, 类和对象class
class a: def change(self, sign, call): self.first = sign self.second = call first = 'first' second = ...
- Python 基础教程之包和类的用法
Python 基础教程之包和类的用法 建立一个文件夹filePackage 在filePackage 文件夹内创建 __init__.py 有了 __init__.py ,filePackage才算是 ...
- 孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习
孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.close() 当一个file对象执行此方法时,将关闭当前 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- python基础(10)--模块
模块(module) 模块,用一坨代码实现了某个功能的代码集合 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来 ...
- Python基础(十)-模块
模块初识 一般把不同功能代码放到不同py文件,一个py文件就是一个模块 三种模块库: 1.Python标准库 2.第三方库 3.自定义库 导入模块:import 库名 (Python解释器只认识执行文 ...
- python基础学习十 logging模块详细使用【转载】
很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...
- Python基础(12)--模块
本文地址:http://www.cnblogs.com/archimedes/p/python-modules.html,转载请注明源地址. 模块简介 如果你退出 Python 解释器重新进入,以前创 ...
- 第六章:Python基础の反射与常用模块解密
本课主题 反射 Mapping 介绍和操作实战 模块介绍和操作实战 random 模块 time 和 datetime 模块 logging 模块 sys 模块 os 模块 hashlib 模块 re ...
随机推荐
- Ansible之Playbook详解、案例
什么是playbook playbooks是一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活.简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的 ...
- windows环境隐藏命令行窗口运行Flask项目
Linux下可以使用nohub来使Flask项目在后台运行,而windows环境下没有nohub命令,如何让Flask项目在windows中在后台运行而不显示命令行窗口呢? 1.写一个.bat脚本来启 ...
- CF1119C Ramesses and Corner Inversion
题目地址:CF1119C Ramesses and Corner Inversion 将两个矩阵异或起来,为 \(1\) 的位置就是需要修改的位置 注意到每一次操作都会导致两行和两列上有两个数被修改 ...
- Docker入门-安装(一)
Docker 在CentOS 7.0下安装Docker, CentOS 7.0默认使用的是firewall作为防火墙 查看防火墙状态 firewall-cmd --state 停止firewall ...
- 可持久化 trie 的简单入门
可持久化 $trie$ ....又是一个表里不一的东西..... 可持久化 $trie$ 的介绍: 和主席树类似的,其实可持久化就是体现在前缀信息的维护上(搞不懂这怎么就叫做可持久化了...) $ ...
- Elasticsearch 安装和配置
1. 下载并解压 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz ...
- 关于PHP上传文件时配置 php.ini 中的 upload_tmp_dir
在<PHP 5.3 入门经典>9.6.3 的试一试中(P235),给出了一个上传文件的例子,这里的文件格式为jpeg图片(image/jpeg).如果之前未配置 php.ini 中的 up ...
- linux 乌班图 lnmp环境搭建
1.#安装Apache2,目前163的源是2.2.22版本02.sudo apt-get install apache203. 04.#安装MySQL,目前163的源是5.5.24版本05.apt-g ...
- SpringBoot配置
多模块Maven项目 .gitignore文件 .idea *.iml targetout log tmp test 父模块pom文件 <?xml version="1.0" ...
- sublime 配置过程
https://www.cnblogs.com/chengqi521/p/7600379.html