python类的三大特性

本文详细介绍了Python类的三大特性:封装、继承和多态。封装通过使用双下划线来隐藏内部实现,允许外部通过指定方法访问。继承使得子类可以继承父类的所有属性和方法,减少代码冗余。Python2与3的继承差异在于默认基类,Python3中所有类都默认继承自object。多继承允许一个子类继承多个父类,而多态则允许在不考虑对象具体类型的情况下调用方法。
摘要由CSDN通过智能技术生成

目录:

  1. 封装
  2. 继承
  3. 多态

封装

  1. 什么是封装:将类的一下属性和方法对外隐藏,对内可见
  2. 为什么要封装:为属性和方法的操作添加权限,具体权限都是通过自定义逻辑来处理
  • 封装的手段:在类属性方法,对象属性方法,静态方法名字前添加 __
    只要是通过 __名字(双下划綫) 这种命名规范,就是对外隐藏
  • 本质:__名字(双下划綫) 封装隐藏变量的本质是 将名字修饰成 _类名__名字

对外解决封装的方式

  1. 如果真的不想让外界访问,就不对外提供访问数据的方法
  2. 如果想让外界访问,可以对外提供访问数据的方法,方法具有逻辑,使用可以添加操作权限
class Test:
    def __init__(self, name):
        # __name只是对外隐藏,对内可见
        self.__name = name

    def get_name(self):
        return self.__name

    def set_name(self, name):
        if 'sb' not in name:  # 对数据的修改可能会产生数据的安全性问题,可以添加限制条件
            self.__name = name

            
# 重点:封装的对外访问语法的优化
class User:
    def __init__(self, name):
        self.__name = name

    @property  # 将方法伪装成属性
    def name(self):
        return self.__name

    @name.setter  # 能为有伪装get方法的(方法)属性,再伪装set方法
    def name(self, value):
        self.__name = value

    @name.deleter
    def name(self):
        del self.__name
        
    # 总结:
    # 1.对象没了,对象的属性也就没了,所以不需要属性 @名字.deleter
    # 2.对外提供get方法是基础,@property,如果没有,外界不可读不可写
    # 3.如果有@property,则可以 @名字.setter,有set,为可读可写,无set为只读

    @property  # 伪装的属性方法,不需要一定有 __开头 的名字与之对应
    def pwd(self)
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值