**ex40- 44都是类的知识 **
python 被称作 面向对象编程语言,就是说,在python中有一个称为类的结构,可以让您以特定的方式构造软件。使用类,您的程序将变得连贯,更简洁。
现在我们开始学习OOP(面向对象编程),这词对零计算机基础的人非常不友好。我们必须通过大量的输入代码练习,努力去理解。
Modules Are Like Dictionaries,模块就像字典
嗯,作者是这么说的,像字典,我是觉得这种说法对零基础的来说难理解。
- 模块就是一个文件,里面有方法和变量
- 它能被导入 import
- 要用小句点” . ” 来调用到模块的方法
其实最直接的方法就是打开模块文件看一下,我们打开下载的第三方库,后缀名为py的文件。里面有方法,有属性,有类。我们之前写的脚本,有函数,有变量的,保存好后,其实就可以称之为模块了 ,跟调用其他库一样的用法
Classes Are Like Modules
直接上代码
class MyStuff(object):
def __init__(self):
self.tangerine = "And now a thousand years between"
def apple(self):
print("I AM CLASSY APPLES!")
这段代码最让人困惑的是,双下划线包着的__init__和 self。
Objects Are Like Import 对象就像import
一个类被创建后,通常下一步我们就是创建一个“实例对象”
thing = MyStuff() 起个名字 = 类名, 这样就创建“实例”对象了
thing.apple()
print(thing.tangerine)
第一个类练习
class Song(object):
def __init__(self, lyrics): # 初始化输入的Lyric 歌词内容
self.lyrics = lyrics # 定义一个属性self.lyrics = 输入的lyric内容
def sing_me_a_song(self):
for line in self.lyrics:
print(line)
happy_bday = Song(["Happy birthday to you",
"I don't want to get sued",
"So I'll stop right there"])
bulls_on_parade = Song(["They rally around tha family",
"With pockets full of shells"])
happy_bday.sing_me_a_song()
bulls_on_parade.sing_me_a_song()
What you should see
Happy birthday to you
I don't want to get sued
So I'll stop right there
They rally around tha family
With pockets full of shells
Study Drills
- 写更多的歌曲,至到感觉到了参数的传递,如例子中的lyrics
- 将歌词变成单独的变量,传递给类使用
- 多读面向对象编程的资料,不懂没关系
我对类的理解
大家都玩过游戏,很多游戏都会让玩家创建角色,其实这个过程就跟类一模一样的,下面举个例子,为方便都用中文
class 战士():
幸运:60 ==> 这里是规定好的属性值,只要创建战士,初始值都是这些
身高:190
速度:30
def __init__(self,姓名,性别,攻击力,防御力): ==> 这里是初始化角色属性的地方,输入给角色创建的名字和性别作为参数,self是实例对象
self.name = 姓名 ==> 得到名字和性别,攻击力,防御力后赋予给角色的属性
self.sex = 性别
self.attack = 攻击力
self.defensive = 防御力
def 龟派气功(self):
...
player1 = 战士(孙悟空,男,99,99) ==> 这样我们就创建了一个战士“实例对象”了
player1.龟派气功() ==> 这样实例的方法就调用了
player1.name ==> 孙悟空
player2 = 战士(苍老湿,女,100,0) ==> 当然,可以创建无数个实例对象