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面向对象的相关知识,感兴趣的朋友可以关注我。

同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

 

posted @ 2021-03-30 21:36  @睦  阅读(108)  评论(0编辑  收藏  举报