面向對象-封裝
阿新 • • 發佈:2018-06-24
自動 查看 繼承 int 自動變 name http nbsp 訪問
---恢復內容開始---
一:創建類和對象
class f:
def bar(self):
print(‘bar‘)
def hello(self, name)
print(‘hello %s‘%name)
fobj = f()
fobj.bar() > ‘bar‘
fobj.hello(‘tom‘) >‘hello tom‘
ps:類中的第一個參數必須是self,類中定義的函數叫方法
二:面向對象三大特性--封裝
#三大特性:封裝、繼承、多態
1.封裝:
#將內容封裝到某處
#從某處調用被封裝的內容
例1:將內容封裝到某處
解析:self是一個形式參數,當執行 fobj = F(‘tom‘,18)時,self等於fobj
例2:從某處調用封裝的內容
調用封裝的內容時,有兩種情況:
#通過對象直接調用
#通過間接self調用
fobj = F(‘tom‘,18)
fobj.name >>> tom 調用fobj對象的name屬性
fobj.age >>> 18 調用fobj對象的age屬性
class F:
def __init__(self,name,age)
self.name = name
self.age = age
def hello(self):
print(self.name)
print(self.age)
fobj = F(‘tom‘,18)
fobj.hello()
>>> tom
>>> 18
設置私有
#類中所有雙下劃線開頭的名稱如__x都會在類定義時,自動變形成:_類名__x的形式
class A:
__B = 123 # _A__B
def __init__(self):
self.__T = 10 # 變成: self._A__T
def __foo(self): # 變成: _A__foo,這是一個私有方法
print(self.__T)
def test(self):
self.__foo() #只有在類內部,才能訪問私有變量和方法,即 調用 _A__foo
a = A()
#a._A__N 可以在外部直接被訪問到的
# self.__T、__foo(self) 這樣的私有變量和方法是直接在外部訪問的,但是可以通過__dict__來查看私有的變量
封裝的意義:
1.封裝數據:隱藏起來對外提供操作該數據的接口,這樣可以確保操作屬性的安全性
2.封裝方法:目的是隔離復雜度,將復雜的實現過程進行隱藏,對外提供接口。ATM機就是一個很好的例子
例子如下:
1.打印汽車有4個輪子
2.打印汽車是紅色的
3.打印汽車牌子是奔馳
1.打印汽車有8個輪子
2.打印汽車是白色的
3.打印汽車牌子是寶馬
#函數式編程:
def carr(num):
print(‘汽車有%s個輪子‘%num)
def color(col):
print(‘汽車是%s色‘ %col)
def brand(bran):
print(‘汽車牌子是%‘%bran)
調用:
carr(4)
color(‘紅色‘)
brand(‘奔馳‘)
carr(8)
color(‘白色‘)
brand(‘寶馬‘)
#面向對象編程
class F:
def __init__(self, carr, color, bran):
self.carr = carr
self.color = color
self.bran = bran
def carr(self):
print(‘汽車有%s個輪子‘%self.carr)
def color(col):1
print(‘汽車是%s色‘ %self.color)
def brand(bran):
print(‘汽車牌子是%‘%self.bran)
fobj1 = F(4,‘紅色‘,‘奔馳‘)
fobj1.carr()
fobj1.color()
fobj1.brand()
fobj2 = F(8,‘白色‘,‘寶馬‘)fobj1.carr()
fobj1.color()
fobj1.brand()
---恢復內容結束---
面向對象-封裝