【Python基础】lpthw - Exercise 40 模块、类和对象

  一、 模块(module)

  模块中包含一些函数和变量,在其他程序中使用该模块的内容时,需要先将模块import进去,再使用.操作符获取函数或变量,如

1 # This goes in mystuff.py
2 def apple():
3     print("This is an apple.")
4
5 pear = "This is a pear."
1 import mystuff as ms
2 ms.apple()
3
4 print(ms.pear)

  输出为

This is an apple.
This is a pear.

  二、 类(class)

  类与模块的比较:使用类可以重复创建很多东西出来(后面会称之为实例化),且这些创建出来的东西之间互不干涉。而对于模块来说,一次导入之后,整个程序就只有这么一份内容,更改会比较麻烦。

  一个典型的类的例子:

1 class Mystuff(object):
2
3     def __init__(self):
4         self.tangerine = "And now a thousand years between"
5
6     def apple(self):
7         print("I AM CLASSY APPLES!")

  注意体会其中的object、__init__和self。

  三、 对象(object)

  对象是类的实例化,类的实例化方法就是像函数一样调用一个类。

1 thing = Mystuff()    # 类的实例化
2 thing.apple()
3 print(thing.tangerine)

  详解类的实例化过程:

  1. python查找Mystuff()并知道了它是你定义过的一个类。
  2. python创建一个新的空对象,里面包含了你在该类中用def指定的所有函数。
  3. 检查用户是否在类中创建了__init__函数,如果有,则调用这个函数,从而对新创建的空对象实现初始化。
  4. 在Mystuff的__init__函数中,有一个叫self的函数,这就是python为你创建的空对象,你可以对它进行类似模块、字典等的操作,为它设置一些变量。
  5. 此处将self.tangerine设置成了一段歌词,这样就初始化了该对象。
  6. 最后python将这个新建的对象赋给一个叫thing的变量,以供后面的使用。

  四、获取某样东西里包含的东西

  字典、模块和类的使用方法对比:

 1 # dict style
 2 mystuff[‘apple‘]
 3
 4 # module style
 5 # import mystuff
 6 mystuff.apple()
 7
 8 # class style
 9 thing = mystuff()
10 thing.apple()

  五、第一个类的例子

 1 class Song(object):
 2
 3     def __init__(self,lyrics):
 4         self.lyrics = lyrics
 5
 6     def sing_me_a_song(self):
 7         for line in self.lyrics:
 8             print(line)
 9
10 happy_bday = Song(["Happy birthday to ~ you ~",
11                     "Happy birthday to ~ you ~",
12                     "Happy birthday to ~ you ~~",
13                     "Happy birthday to you ~~~"])
14
15 bulls_on_parade = Song(["They rally around the family",
16                         "With pockets full of shells"])
17
18 happy_bday.sing_me_a_song()
19
20 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。

原文地址:https://www.cnblogs.com/cry-star/p/10669127.html

时间: 2024-11-08 22:22:45

【Python基础】lpthw - Exercise 40 模块、类和对象的相关文章

Python基础----面向对象编程介绍、类和对象

面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux内核.git.apache服务器等 优点:极大的降低了程序的设计复杂度 缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身 面向对象编程:不是编程的全部,只是用来解决软件可扩展性的 核心是对象(上帝式思维),对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.面向对象就是把计算

笨办法40模块, 类和对象class

1 class a: 2 def change(self, sign, call): 3 self.first = sign 4 self.second = call 5 first = 'first' 6 second = 'second' 7 8 z = a() 9 print("赋值前:sign = ", z.first) 10 c = a() 11 print("赋值前:call = ", c.second) 12 13 z.change("hah

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da

python基础-常用内建模块

一.collections:内建集合模块. 1.namedtuple:创建一个自定义的tuple对象 2.deque:为了高效实现插入和删除操作的双向列表,适合用于队列和栈 3.defaultdict:Key不存在时返回默认值 4.OrderedDict:保持Key的顺序 5.Counter:一个简单的计数器 二.base64 : 一种用64个字符来表示任意二进制数据的方法 三.struct : str和其他二进制数据类型的转换 四.hashlib : 提供常见的摘要算法,如MD5,SHA1 五

Python基础(12)--模块

本文地址:http://www.cnblogs.com/archimedes/p/python-modules.html,转载请注明源地址. 模块简介 如果你退出 Python 解释器重新进入,以前创建的一切定义(变量和函数)就全部丢失了.因此,如果你想写一些长久保存的程序,最好使用一个文本编辑器来编写程序,把保存好的文件输入解释器.我们称之为创建一个脚本.程序变得更长一些了,你可能为了方便维护而把它分离成几个文件.你也可能想要在几个程序中都使用一个常用的函数,但是不想把它的定义复制到每一个程序

第六章:Python基础の反射与常用模块解密

本課主題 反射 Mapping 介绍和操作实战 模块介绍和操作实战 random 模块 time 和 datetime 模块 logging 模块 sys 模块 os 模块 hashlib 模块 re 模块 本周作业 反射 Mapping 介绍和操作实战 反射是利用字符串的形式去对象 (模块) 中操作 (寻找/检查) 成员 案例例子 假设创建了一个common.py 程序里而有3个功能,比如网站里的登录页面.主页页面还有登出页面都是不同的页面,要显示的内容都不一样. def login(): p

Python基础知识之xml模块

转载自:http://www.cnblogs.com/alex3714/articles/5161349.html XML处理模块: ml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml. xml的格式如下,就是通过<>节点来区别数据结构的: <?xml version="1.0"?> <dat

Python 基础之面向对象初识与类的封装

一: 面向对象类的初识#(1) 类的定义#三种方式:#1.class MyClass:    pass #2.推荐class MyClass():    pass #3.class MyClass(object):    pass#(2) 类的实例化class MyClass():    pass#类的实例化,实例化对象obj = MyClass() #obj 就是一个对象#(3)类的基本结构只有成员方法和成员属性对象.属性  对象.方法()#例:class MyClass():    #成员属

课时40:类与对象:一些相关的BIF

目录: 一.一些相关的BIF 二..课时40课后习题及答案 ********************** 一.一些相关的BIF ********************** 1.issubclass(class,classinfo) 如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False: (1)一个类被认为是其自身的子类. (2)classinfo可以是类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True. (3)在其