(一)类的例子
class Song(object): #class表示要创建类,Song是类的名称,
def __init__(self, lyrics):
self.lyrics = lyrics #这里是设置了lyrics是的全局变量,后面的类里都可以使用这个参数,必须要用这个
#根据类 Song 创建对象
#自动执行Song类的 __init__方法
def sing_me_a_song(self): #定义sing_me_a_song函数
for line in self.lyrics: #采用for循环获取每一句歌词
print(line) #打印出来
Thursday_song = Song(["今天星期四明天星期五",
"再坚持一天然后星期天",
"星期天不上班一直睡到下午",
"这就是我废物的一天"])
important_words = Song(["好不容易来人间一趟",
"一定要去看看太阳~"])
Thursday_song.sing_me_a_song()
impotent_words.sing_me_a_song()
今天星期四明天星期五
再坚持一天然后星期天
星期天不上班一直睡到下午
这就是我废物的一天
好不容易来人间一趟
一定要去看看太阳~
常见问题:
为什么我在类下面用 init 函数或者其他函数的时候要用 self ?
如果你不用 self,那么像 cheese = ‘Frank’ 这样的代码就会很含糊,计算机不知道你是指实例的 cheese 属性还是 一个叫做 cheese 的局部变量。
而用 self.cheese = ‘Frank’ 的话就会很清晰,你是指实例的属性 self.cheese 。
(二)学着去说面向对象
类(class) :告诉 Python 创建一个新类型的东西
对象(object)两种含义:最基本类型的东西, 任何实例。
实例(instance) :当你告诉 Python 创建一个类的时候你所得到的东西。
def :你如何在类里面定义一个函数。
self :在一个类的函数里面,self 是被访问的实例/对象的一个变量。
继承(inheritance) :关于一个类能从另一个类那里继承它的特征的概念,很像你和你的父母。
组合(composition) :关于一个类可以由其他一些类构成的概念, 很像一辆车包含几个*。
属性(attribute) :类所拥有的从组合那里得到的特性,通常是变量。
is-a :一种用来表达某物继承自一种东西的表述, 就像“三文鱼是一种鱼”。
has-a :一种用来表达某物是由一些东西组成或具有某种特性的表述,就像“三文鱼有一个嘴巴”。
短语训练:
class X(Y) :
创建一个名为 X 并继承自 Y 的类。
class X(object):
def init(self, J)
类 X 有一个带有 self 和 J 参数的 init 函数。
class X(object):
def M(self, J):
类 X 有一个带有 self 和 J 参数的 M 函数。
foo = X():
设 foo 为类 X 的一个实例。
foo.M(J)
从 foo 那里获取 M 函数,并用 self 和 J 参数来调用它。
foo.K = Q
从 foo 那里获取 K 属性,并设它为 Q