特殊方法__ 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




