一, 模块 (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.
来源: http://www.bubuko.com/infodetail-3015798.html