栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

面向对象的程序设计(7)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象的程序设计(7)

目录

1. 面向对象概述

2. 类的定义和使用

2.1 定义类

2.2 创建类的实例

2.3 __init__()

2.4 创建类的成员

2.4.1 创建实例方法并访问

2.4.2 创建数据成员并访问

3. 继承

3.1 继承语法

3.2 方法重写


1. 面向对象概述

Python从设计之初就已经是一种面向对象的语言。面向对象(object oriented,OO)是一种设计思想,面向对象中的对象,通常是指客观世界中存在的的对象。对象是一种抽象概念,表示任意存在的事物。通常将对象划分为两部分,即静态部分与动态部分。静态部分被称为“属性”,如人的性别;动态部分指的是对象的行为,即对象执行的动作,如人可以行走。

类是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。例如,把雁群比作大雁类,那么大雁类就具备了翅膀和爪子等属性,觅食和睡觉等行为,而一只雁群中的大雁则就是大雁类中的一个对象。

面向对象程序设计具有3个主要基本特征,即封装、继承和多态。

封装就是类;继承,子类继承父类,实现重复利用;多态,将父类对象应用于子类的特征就是多态,即子类继承父类时又具备各自的特性。

2. 类的定义和使用

2.1 定义类

语法格式如下:

class ClassName:
    '''类的描述'''
    statement
#ClassName:指定类名,一般使用大写字母开头。
#类的描述:指定类的文档字符串。
#statement:类体,主要类变量(或类成员)、方法和属性等定义语句组成。或者pass代替。

例如:

在定义类时还没想好具体功能时。

class Geese:
    '''大雁类'''
    pass

2.2 创建类的实例

创建类的语法格式如下:

ClassName(parameterlist)
#ClassName:必选参数,指定具体的类。
#parameterlist:可选参数,当创建一个类时,没有创建__init__()方法,
或者__init__()方法只有一个self参数时,parameterlist可以省略。

例如:

创建定义的Geese类的一个实例:

class Geese:
    '''大雁类'''
    pass

wildGoose = Geese()
print(wildGoose)

运行结果如下:

<__main__.Geese object at 0x00000241EA5E9C30>

2.3 __init__()

说明:在创建类后,通常会创建一个__init__()方法,该方法是一个特殊的方法。每当创建一个类的新实例时,python都会自动执行它。__init__()方法中必须包含一个self参数,并且必须是第一个参数。self参数是一个指向实例本身的引用,用于访问类中的属性和方法。在方法被调用时会自动传递实际参数self。因此,在__init__()方法中只有一个参数的情况下,当创建类的实例时,就无须指定实际参数。

创建Geese类,构造__init__()方法,并创建大雁类的一个实例:

class Geese:
    '''大雁类'''
    def __init__(self): #self是第一个参数
        print('我是大雁类')
wildGoose = Geese()

运行结果如下:

我是大雁类

在__init__()方法中,除self参数外,还可以自定义一些参数,参数间使用逗号,隔开。

例如:

class Geese:
    '''大雁类'''
    def __init__(self,a,b):
        print('我是大雁类')
        print(a)
        print(b)
a = '我是大雁类中的属性a'
b = '我是大雁类中的属性b'
wildGoose = Geese(a,b)

运行结果如下:

我是大雁类
我是大雁类中的属性a
我是大雁类中的属性b

2.4 创建类的成员

2.4.1 创建实例方法并访问

实例方法是在指在类中定义的函数,该函数是一种在类的实例上操作的函数。

例如:

class Geese:
    '''大雁类'''
    def __init__(self,a,b):
        print('我是大雁类')
        print(a)
        print(b)
    def fly(self,state): #创建实例方法,定义飞行方法
        print(c)
a = '我是大雁类中的属性a'
b = '我是大雁类中的属性b'
c = '人字飞行'
wildGoose = Geese(a,b) #创建实例
wildGoose.fly(c) #访问实例方法

运行结果如下:

我是大雁类
我是大雁类中的属性a
我是大雁类中的属性b
人字飞行

2.4.2 创建数据成员并访问

数据成员是指在类中定义的变量,即属性,根据定义位置,又可以分为类属性和实例属性。

类属性

类属性是指定义在类中,并且在函数体外的属性。可以通过类名称或者实例名称被访问。

例如:

还是定义一个Geese类,在该类中定义2个属性,用于记录雁类的特征。

lass Geese:
    '''雁类'''
    d = '脖子长' #定义在类中,并且在函数体外。
    e = '振翅快'
    def __init__(self,a,b):
        print('我是大雁类')
        print(a)
        print(b)
        print(Geese.d)
        print(Geese.e)
    def fly(self, state):  # 创建实例方法,定义飞行方法
        print(c)
a = '我是大雁类中的属性a'
b = '我是大雁类中的属性b'
c = '人字飞行'
wildGoose = Geese(a,b) #创建实例
wildGoose.fly(c) #访问实例方法

运行结果如下:

我是大雁类
我是大雁类中的属性a
我是大雁类中的属性b
脖子长
振翅快
人字飞行

实例属性

实例属性是指定义在类的方法中的属性,只作用于当前实例中。

例如:

class Geese:
    '''雁类'''

    def __init__(self):
        self.d = '脖子长'
        self.e = '振翅快'
        print('我是大雁类')
        print(self.d)
        print(self.e)
wildGoose = Geese()  # 创建类的实例

运行结果如下:

我是大雁类
脖子长
振翅快

3. 继承

3.1 继承语法

通过继承不仅可以实现代码的重用,还可以通过继承来理顺类与类之间的关系。在python中,可以在类定义语句中,类名右侧使用一对小括号将要继承的基类名称括起来,以实现类的继承。

语法格式如下:

class ClassName(baseclasslist):
    '''类的描述'''
    statement
#ClassName:指定类名,一般使用大写字母开头。
#baseclasslist:用于指定要继承的基类,可以有多个,类名之间用逗号,分割。
#类的描述:指定类的文档字符串。
#statement:类体,主要类变量(或类成员)、方法和属性等定义语句组成。或者pass代替。

例如:

创建水果类(基类)及派生类

class Fruit: #定义水果类
    color ='绿色' #定义类属性
    def harvest(self,color):
        print('水果是:', color)
        print('水果成熟')
        print('水果未成熟时是:',Fruit.color )
class Apple(Fruit): #定义苹果类
    color = '红色'
    def __init__(self):
        print('苹果')
class Orange(Fruit): #定义橙子类
    color = '橙色'
    def __init__(self):
        print('橙子')

apple = Apple() #创建类的实例
apple.harvest(apple.color) #调用基类的harvest()方法
orange = Orange()
orange.harvest(orange.color)

运行结果如下:

苹果
水果是: 红色
水果成熟
水果未成熟时是: 绿色
橙子
水果是: 橙色
水果成熟
水果未成熟时是: 绿色

3.2 方法重写

当基类中的某些方法不完全适用于派生类时,需要在派生类中重写基类的这个方法。

例如:

在创建派生类Apple和Orange时,重写harvest()方法。

class Fruit: #定义水果类
    color ='绿色' #定义类属性
    def harvest(self,color):
        print('水果是:', color)
        print('水果成熟')
        print('水果未成熟时是:',Fruit.color )
class Apple(Fruit): #定义苹果类
    color = '红色'
    def __init__(self):
        print('苹果')

    def harvest(self, color):
        print('苹果是:', color)
        print('苹果成熟')
        print('苹果未成熟时是:', Fruit.color)

class Orange(Fruit): #定义橙子类
    color = '橙色'
    def __init__(self):
        print('橙子')

    def harvest(self, color):
        print('橙子是:', color)
        print('橙子成熟')
        print('橙子未成熟时是:', Fruit.color)
apple = Apple() #创建类的实例
apple.harvest(apple.color) #调用基类的harvest()方法
orange = Orange()
orange.harvest(orange.color)

运行结果如下:

苹果
苹果是: 红色
苹果成熟
苹果未成熟时是: 绿色
橙子
橙子是: 橙色
橙子成熟
橙子未成熟时是: 绿色

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934087.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号