Python的回顾-8月2日

面向对象程序设计

一,前言
python是一门与生俱来的面向对象的语言,可以方便的创建类与对象。

二,对象的概念
1,对象是一个抽象的概念,世间万物皆可为对象,比如人也是一个对象。
2,对象一般分为两个部分,静态部分与动态部分。
静态部分:也称属性,客观存在,不能被忽略的,比如,人的性别。
动态部分:也称行为,对象执行的动作,比如,人可以行走。
3,在python中一切都是对象。

三,类的概念
1,定义:
类是封装对象的属性与行为的载体。
比如,大雁类,具备翅膀与爪等属性,飞行,睡觉等行为,那么大雁类中的任意一个对象都有这些属性与行为。
2,面向对象程序设计的特点
封装:将属性与行为均相同的一些对象封装起来。--------类
继承:子类通过继承获得父类的属性与行为的同时,又添加了自己特有的属性与行为。
多态:通过一个父类,可以继承出许多的子类,这样的一个现象,称为多态。

四,类的定义与使用
1,定义类
class 类名:
“”“文档字符串
””“
类体

注意:1,类名一般需要大写。
2,类体可以用pass语句占位。

2,类体包含的__init_(参数列表)方法
注意:开头与结尾是双下划线,这是一种约定。

3,创建类的实例
变量名=类名(参数列表)
注意:当__init__(self),只有self参数时,参数列表可以省略。
代码:

class Pig:
    """
    猪类
    """
    def __init__(self):
        print("我是猪类")
blackpig=Pig()

结果:
在这里插入图片描述
五,类体中的成员
1,成员1:变量(属性)
属性可以分为类属性与实例属性。
类属性:定义在类中,但在函数外的变量,类的所有实例都可以访问类属性。
实例属性:定义在函数内的变量,只有当前实例可以访问该实例属性。

2,成员2:函数(方法)
定义在类中,与def init()的缩进相同。

六,访问类体中的成员
1,访问类中的函数(方法):
类名.函数名(参数列表)

实例名.函数名(参数列表)
2,访问类中的类属性
类名.变量名

实例名.变量名

class Pig:
    """
    猪类
    """
    color='白色'
    def __init__(self):
        print("我是猪类")
blackpig=Pig()
print(Pig.color)
print(blackpig.color)

结果:
在这里插入图片描述

3,访问类中的实例属性
实例名.变量名

class Pig:
    """
    猪类
    """
    color='白色'
    def __init__(self):
        self.body="肥胖"
        print("我是猪类")
blackpig=Pig()
print(Pig.color)
print(blackpig.color)
print(blackpig.body)

在这里插入图片描述
注意:实例属性只能被实例访问,不能通过类名访问。

七,访问限制
在python中,类体中有些属性很重要,是机密,不能被访问,但是有些属性,却又是共享值,需要被访问,所以python中采取以下方法,对访问进行限制。
方法:
在属性或方法前加上单下划线,双下划线,或首尾双下划线。
1,单下划线开头,_foo:
表示公有类型的成员,允许类本身(类名与实例名)与子类访问。
2,双下划线开头,__foo:
表示私有类型的成员,只允许类本身(类名)访问,不允许子类访问。
3,首尾双下划线,—foo—:
表示特殊方法,系统定义的方法。

八,修改属性
访问的同时,使用赋值语句。

class Pig:
    """
    猪类
    """
    color='白色'
    def __init__(self):
        self.body="肥胖"
        print("我是猪类")
blackpig=Pig()
blackpig.body='瘦弱'
print(Pig.color)
print(blackpig.color)
print(blackpig.body)

结果:
在这里插入图片描述

九,特殊属性
使用@property(装饰器)强行将方法装饰为属性。
方法:
@property
def 函数名(参数列表):
函数体

1,举例

class Pig:
    """
    猪类
    """
    color='白色'
    def __init__(self):
        self.body="肥胖"
        print("我是猪类")
    @property
    def pp(self):
        print('我是一头大肥猪')
        return 'pigpig'
blackpig=Pig()
blackpig.body='瘦弱'
print(Pig.color)
print(blackpig.color)
print(blackpig.body)
print(blackpig.pp)

结果:
在这里插入图片描述
注意:此时的pp就是一个属性,不再是一个方法。

十,为属性添加安全保护机制
使用@property装饰出的属性,不能修改,但可以访问。
比如:

class Pig:
    """
    猪类
    """
    color='白色'
    def __init__(self):
        self.body="肥胖"
        print("我是猪类")
    @property
    def pp(self):
        print('我是一头大肥猪')
        return 'pigpig'
blackpig=Pig()
blackpig.body='瘦弱'
print(Pig.color)
print(blackpig.color)
print(blackpig.body)
print(blackpig.pp)
blackpig.pp="我不是一头大肥猪"

结果:在这里插入图片描述

十一,继承
通过继承不仅可以实现代码的重用,还能理顺类与类之间的关系。
1,方法
class 子类名(父类名):
“””文档字符串
“”
类体

2,python中允许子类访问父类中除了__init__的方法。

class Pig:
    """
    猪类
    """
    color='白色'
    def __init__(self):
        self.body="肥胖"
        print("我是猪类")
    def pp(self):
        print('我是一头大肥猪')
class Black_Pig(Pig):
    """
    猪类中的黑猪类
    """
    color1='黑色'
    def __init__(self):
        print('我的颜色:'+Black_Pig.color1)
ppp=Black_Pig()
ppp.pp()

结果:
在这里插入图片描述
3,方法重写
当父类中的某个方法不完全使用子类时,就可以使用方法重写。

class Pig:
    """
    猪类
    """
    color='白色'
    def __init__(self):
        self.body="肥胖"
        print("我是猪类")
    def pp(self):
        print('我是一头大肥猪')
class Black_Pig(Pig):
    """
    猪类中的黑猪类
    """
    color1='黑色'
    def __init__(self):
        print('我的颜色:'+Black_Pig.color1)
    def pp(self):
        print('我不是一头大肥猪')
ppp=Black_Pig()
ppp.pp()

结果:
在这里插入图片描述

4,使用super()方法可以让父类中的__init__方法被子类调用。

class Pig:
    """
    猪类
    """
    color='白色'
    def __init__(self):
        self.body="肥胖"
        print("我是猪类")
    def pp(self):
        print('我是的体重是:',self.body)
class Black_Pig(Pig):
    """
    猪类中的黑猪类
    """
    color1='黑色'
    def __init__(self):
        print('我的颜色:'+Black_Pig.color1)
        super().__init__()
ppp=Black_Pig()
ppp.pp()

结果:
在这里插入图片描述

和平精英滴滴我,id:supremeboss

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值