Python合集之面向对象(三)
类的成员主要有实例方法和数据成员组成,在类中创建了类的成员后,可以通过类的实例进行访问。
1.创建实例方法并访问
所谓实例方法是指在类中定义的函数,该函数时一种在类的实例上操作的函数。同__init__()方法一样,实例的方法的第一各参数必须是self,并且必须包含一个self参数。创建实例方法语法格式如下:
def functionName(self,parameterlist): block 参数说明: functionName:用于指定方法名,一般使用小写字母开头。 self:必须参数,表示类的实例,其名称可以是self以外的单词,使用self只是一个惯例而已。 parameterlist:用于指定除self参数以外的的参数,各参数间使用逗号进行分隔。 block:方法体,实现的具体功能
注:实例方法和Python中的函数的主要区别就是,函数实现的是某个独立的功能,而实例方法是实现类中的一个行为,是类的一部分。
实例方法创建完成后,可以通过类的实例名和点 . 操作符进行访问,语法格式如下:
instanceName.functionName(parametervalue)
参数说明:
instanceName:为类的实例名称
functionName:为调用的方法名称。
parametervalue:表示为方法指定对应的实际参数,其值的个数与创建实例方法中 parameterlist的个数相同。
例如:
class Geese: '''大雁类''' def __init__(self,beak,wing,claw): print("我是大雁类,我有以下特征:") print(beak) print(wing) print(claw) def fly(self,state): print(state) '''******调用方法**************''' beak_1="緣的基部 较高,长度和头部的长度基本相等" wing_="翅膀长而尖" claw_="爪子是噗状的" wildGoose=Geese(beak_1,wing_1,claw_1) wildGoose.fly("我飞翔的时候,一会儿排成人形,一回儿排成一字")
注:在创建实例方法时,也可以和创建函数时一样为参数设置默认值,但是被设置类默认值的参数必须位于所有参数的最后。
例如:上面的例子中,可以将实例方法修改为:
def fly(self,state="我也会飞"):
在调用该方法时,就可以不再指定参数值。
2.创建数据成员并访问
数据成员是指在类中定义的变量,即属性,根据定义位置,又可以分为类的属性和实例属性。
2.1 类属性
类属性是指定义在类中,并且在函数体外的属性,类属性可以在类的所有实例之间共享值,也就是在所有的实例化的对象中公用。
注:类属性可以通过类名称或者实例名访问。
例如:
class Geese: '''雁类''' neck="脖子较长" wing="震翅膀频率高" leg="腿位于身体的中心指点,行走自如" def __init__(self): print("我属于雁类,我有以下特征:") print(Geese.neck) print(Geese.wing) print(Geese.leg)
创建上面的类,然后创建该类的实例,代码如下;
geese=Geese()
注:在Python中除了可以通过类名称访问类属性,还可以动态的为类和对象添加属性,也可以修改类属性,修改结果将作用于该类的所有实例。
2.2 实例属性
实例属性是指定义在类方法中的属性,只作用于当前实例。
例如:
class Geese: '''雁类''' def __init__(self): neck="脖子较长" wing="震翅膀频率高" leg="腿位于身体的中心指点,行走自如" print("我属于雁类,我有以下特征:") print(self.neck) print(self.wing) print(self.leg)
创建上面的类Geese,然后创建类的实例,代码如下:
geese=Geese()
注:实例属性只能通过实例访问,如果通过类名访问实例属性,将抛出异常。
对于实例属性也可以通过实例名称修改,与类属性不同,通过实例名称修改实例属性后,并不影响该类的另一个实例中相应的实例属性的值。
花絮:
本期的Python 面向对象就分享到这里,下期我们将继续分享Python面向对象的相关知识,感兴趣的朋友可以关注我。
同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。