#-*- coding = utf-8 -*-
#@time:2020/8/4 17:04
#@author:huxuehao
#@file:032_封裝-物件導向的三大特徵之一.py
#@software:pycharm
#@emial:
# 封裝:物件導向的三大特徵之一,確保了資料的安全
# 1.隱藏物件中一些不希望被外界訪問的屬性、方法
# 2.如何隱藏屬性?
# 1.將的物件的屬性名改為外部不知道的名字
# 3.如何獲取(修改)物件中隱藏的屬性
# 1.通過get、set方法使外部可以訪問到屬性
# 4.使用封裝,雖然增加了複雜性,但是保證了資料的安全性
class
person()
:def
__init__
(self,name,age,gender)
: self.hidden_name=name
self.hidden_age=age
self.hidden_gender=gender
defget_name
(self)
:return self.hidden_name
defget_age
(self)
:return self.hidden_age
defget_gender
(self)
:return self.hidden_gender
defset_name
(self,name)
: self.hidden_name=name
defset_age
(self,age)
: self.hidden_age=age
defset_gender
(self,gender)
: self.hidden_gender=gender
p1=person(
'小公尺',18
,'man'
)print
('name:'
,p1.get_name())
# 獲取屬性值
print
('age:'
,p1.get_age())
print
('gender:'
,p1.get_gender())
p1.set_name(
'小公尺10'
)# 修改屬性值
print
('name:'
,p1.get_name())
print()
# 1.我們可以使用雙下劃線, __屬性名 。來限制屬性的被訪問的範圍為 方法 內
# 2.其實這個的原理為給它改了另乙個名字:如:__width ——> _rectangle_width
# 3.所以我們也可以不加__ ,而是直接加乙個_ , 表明是私有屬性,你可以修改,但是我不希望你修改
class
rectangle
:def
__init__
(self,width,height)
: self.__width=width
self.__height=height
defget_width
(self)
:return self.__width
defget_height
(self)
:return self.__height
defset_width
(self,width)
: self.__width=width
defset_height
(self,height)
: self.__height=height
defgetarea
(self)
:return self.__width * self.__height
@property
defarea
(self)
:#相當於get方法
return self.__width * self.__height
@area.setter #相當於set方法
defarea
(self,area)
:print
('面積為:'
,area)
rect=rectangle(10,
20)print
('面積:'
,rect.getarea())
# 200
rect.__width=
50# 面積還是200,表明這個修改無效
print
('re_面積:'
,rect.getarea())
#200
print()
# property 裝飾器
# 1.通過@property裝飾的方法(只含有self的get方法),將該方法轉化成該物件的屬性
# 2.我們就可以像呼叫屬性一樣呼叫方法(物件.方法名)
# 3.通過@方法名.setter 可以修飾設定乙個含有多個形參的set方法,方法名要與用@property裝飾的方法 同名
print
(rect.area)
# 呼叫了用@property裝飾的area方法
rect.area=
2589
# 呼叫了用@area.setter裝飾的area方法,2589是方法的實參
物件導向三大特徵之一 封裝
封裝 將類的某些資訊隱藏在類內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏資訊的操作和訪問 封裝的步驟 1 屬性私有化 2 提供公共的設定器和訪問器 3 在設定器和訪問器中新增業務校驗邏輯 private 私有的,對外不可見 private string name private ...
物件導向學習(三) 物件導向的三大特徵之一封裝性
封裝 繼承 多型 1.方法就是一種封裝 2.關鍵字private也是一種封裝 封裝就是將一些細節資訊隱藏起來,對於外界不可見 package cn.itcast.demo.object oriented.demo02 public class demo01method int max getmax ...
物件導向三大特徵之封裝
上半句 下半句。三流的書籍和部落格只會告訴你上半句,因為它們的作者自己也不知道下半句,而讓我們接近真理,走的更遠的是下半句。並且下半句往往非常簡單。上半句就是一些半吊子挖出的天坑,就算下半句非常簡單。因為上半句的誤導產生的阻礙,讓無數人很多年也接觸不到講述真理的下半句。時刻警醒 我們要學習的是講述真...