【类不类一】类和对象
类和函数紧密关联,可以说,无函数不成类,因此,既然函数可以代替那些要重复的代码,节省空间,
那么作为承载了一大堆的函数的类,不是更能让我们的视野一片酸爽嘛?
参考: 习题—40, 效果就是用类,把列表的元素一行行打印出来......
《笨方法学Python》: http://www.2cto.com/shouce/Pythonbbf/index.html
解法1: 先不初始化(不使用__init__()方法/函数)
1 # coding: utf-8 2 # 声明编码是采用 "utf-8", 这是对应汉字的编码 3 4 # object: 对象是非必须的,但为了表示Song类是object的子类,还是加上吧 5 class Song(object): 6 7 def sing(self, lyrics): 8 # 将列表进行迭代的,也就是把列表的元素逐个打印出来 9 for line in lyrics: 10 print line 11 12 song = Song() 13 14 song.sing(["Happy birthday to you", 15 "I don't want to get sued", 16 "So I'll stop right there"])
---------------------------------------------------------------------------------------------------------------------
解法2: 主角登场,说我嘛,Q > Q __int__()
1 # coding: utf-8 2 3 class Song(object): 4 5 # def: (define) 定义, init: (initialize) 初始化, 这一句是定义初始化函数 6 # self: 自己,本身,所以self就是用来的表示Song类自己的 7 def __init__(self, lyrics): 8 self.lyrics = lyrics 9 10 def sing(self): 11 for line in self.lyrics: 12 print line 13 14 # 这一步骤叫类的实例化,也就是把Song类的功能都赋值给song对象,所以对 15 # 象又叫类的实例 16 song = Song(["Happy birthday to you", 17 "I don't want to get sued", 18 "So I'll stop right there"]) 19 20 song.sing()
输出结果是一样的, 值得强调的是,由于这里只定义了一个函数,所以并不能体现出类的优势,方法
1 和方法 2 的不同之处就在于,sing()函数利用了从初始化函数那里传递过来的实例变量self.lyrics,因为
类里面的函数之间,只有 "self" 是共有的参数,所以以这样的命名方式命名实例变量 self.lyrics,可以体现
它的功能,即类里面的函数与函数之间可自由调用—实例变量
------------------------------------------------------------------------------------------------------------------------
继续了解类,请点下面链接 -|——>