物件導向 封裝

2022-09-03 22:12:23 字數 2521 閱讀 3731

---恢復內容開始---

一:建立類和物件

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()

---恢復內容結束---

物件導向 封裝

面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了 物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。面向過程 優點 效能比物件導向高,因為類呼叫時需要例項化,開銷比...

物件導向(封裝)

物件導向 封裝 封裝可以被認為是乙個保護屏障,防止該類的 和資料被外部類定義的 隨機訪問。如下 public class test public int getage public string getname public string getidnum public void setage in...

物件導向 封裝

car類 public class car 方法 public void salecar set 改屬性值。用了private之後,main方法只能呼叫,在car這個類裡才能修改private修飾的變數 傳入乙個double型別的引數 pr,main方法呼叫setprice方法,傳入pr的值,pr在...