032 封裝 物件導向的三大特徵之一 py

2021-10-08 21:46:54 字數 2807 閱讀 9977

#-*- 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 ...

物件導向三大特徵之封裝

上半句 下半句。三流的書籍和部落格只會告訴你上半句,因為它們的作者自己也不知道下半句,而讓我們接近真理,走的更遠的是下半句。並且下半句往往非常簡單。上半句就是一些半吊子挖出的天坑,就算下半句非常簡單。因為上半句的誤導產生的阻礙,讓無數人很多年也接觸不到講述真理的下半句。時刻警醒 我們要學習的是講述真...