现在的编程思想的核心都是面向对象,而变量、函数和类就是面向对象的基础,
类
类是一些具有相似属性和功能的对象集合,如果我们把类比作制作手机的模具,那么通过这个模具,我们可以生产出大批量具有相同功能和属性的手机。
定义类的关键字:class
所有的class默认继承于object,我们来写一个手机类,
class Phone(object): pass
注意:括号里的object可以省略。
那么如何通过类创建一个实例对象呢?如下;
phone_01 = Phone()
函数
函数是一个功能点的具体实现,例如手机打电话,发短信,听歌等等。
定义函数的关键字:def
我们在手机类里定义打电话,发短信,听歌等函数,
class Phone(object): """手机类""" def call_number(self): """打电话""" pass def send_message(self): """发短信""" pass def listen_music(self): """听歌""" pass
注意:self表示调用当前函数的实例对象。
如何通过实例对象调用这些函数?如下;
phone01.call_number() phone01.send_message() phone01.listen_music()
上面这些定义在类中,没有任何装饰,但括号中包括self的方法称为实例方法,除了实例方法之外,还有类方法,静态方法,下面我们来看看它们都是怎么定义的;
# 类方法 @classmethod def play_game(cls): """打游戏""" pass # 静态方法 @staticmethod def look_movie(): """看电影""" pass
这些方法之间有是什么特征?
- 类方法通过@classmethod修饰,静态方法通过@staticmethod修饰,实例方法不需要修饰;
- 类方法参数中有cls标识,实例方法参数中有self标识,静态方法可以不需要任何参数标识
- 类方法和实例方法和类具有关联性,静态方法和类没有任何关系,只是存放在类中而已
- 类方法和静态方法能被实例对象和类调用,实例方法只能被实例对象调用
变量
变量是一个属性值,例如手机的颜色,重量等等。
我们给手机类声明颜色、重量等变量;
class Phone(object): color = ‘balck‘ weight = ‘300g‘
但是这样做有一个非常明显的缺点,就是实例化的手机颜色都是红色,重量都是300g,如果需要不同的属性值还得一个一个改,不太灵活,所以初始化方法__init__就出现了,
class Phone(object): def __init__(self, color, weight): """实例对象初始化方法""" self.color = color self.weight = weight
如果实例对象有相同的属性名且属性值可能不同的时候,就需要将这些变量放入初始化方法中,如何使用它呢?如下;
phone_01 = Phone(‘red‘, ‘500g‘) phone_02 = Phone(‘black‘, ‘350g‘)
类中的参数实际上传给了__init__方法,因此phone_01和phone_02在实例化的时候就拥有了自己的颜色和重量属性。
在使用变量时,一定要注意作用域,根据作用域不同的划分, 可以将变量分为,
全局变量:定义在文件中,函数之外的变量,可以在文件任何地方被调用
成员变量:定义在函数之中的变量,只能在当前函数中使用
如果想让成员变量可以在函数外部被调用,可以使用关键字global将变量声明为全局变量,注意global声明变量时,不要给变量赋值。
原文地址:https://www.cnblogs.com/suanmiaoup/p/12174853.html