2020-07-30

特殊方法__ init__ ()

类的特殊方法

  • 第一个 name是必须的
  • 第二个 name是的名称是不同的
  • 第三个 这种添加name的方式非常容易出现错误
    我们希望在创建对象的时候,必须设置name属性。如果不设置对象都无法创建
    学习特殊方法
  • 1.特殊方法什么时候调用?
  • 2.特殊方法有什么作用?


    image.png
image.png

标准的类程序

image.png

封装的引入
尝试定义一个车类
属性 name color
方法 run() laba()

image.png

目前我们可以直接通过 对象.属性的方式来修改属性值,这种方式导致对象中的属性可以随意修改 非常不安全
现在我们需要一种方式来增强数据的安全性
1.属性不能随意修改(我让你改你才能改,我不让你改你就不能改)
2.属性不能改为任意值

封装

封装的标准写法

image.png

封装一
封装是什么?

  • 封装是面向对象三大特性之一
  • 封装指的是隐藏对象中一些不希望被外部访问到的属性或方法
    如何隐藏属性
  • 将对象的属性名,修改成一个外部不知道的名字
    如何获取(修改)对象中的属性
  • 需要我们提供一个getter和setter方法访问属性和修改属性
  • 使用封装,确实增加了类定义的复杂程度,但是它也确保了数据的安全
    1.隐藏了属性名,使调用者无法随意修改对象的属性
    2.增加了getter和setter方法,很好的控制了属性是否是只读的
    如果希望属性只读,则可以直接去掉setter方法
    如果希望属性不能被外部访问,则可以直接去掉getter方法
    3.使用setter方法设置属性,可以增加数据的验证,确保数据的值是正确的
    4. 使用getter方法和setter方法获取和设置属性的时候,可以在读取和修改属性的时候做一些其他的操作
    image.png

    封装二
  • 可以对对象的属性使用双__下划线开头
  • 双下划线的属性是对象的隐藏属性,隐藏属性只能在类的内部访问,无法通过对象访问
  • 其实隐藏属性只不过是python自动为属性修改了一个名字
  • 一般我们会将一些私有的属性(不希望被外部访问)以_开头
    image.png

    image.png

    property装饰器
  • @property 将方法转换为相同名称的只读属性


    image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容