物件導向程式設計基礎
類和物件
類是物件的藍圖和模板,而物件是類的例項。
定義類
class student(object):
# __init__是乙個特殊方法用於在建立物件時進行初始化操作
# 通過這個方法我們可以為學生物件繫結name和age兩個屬性
def __init__(self,name,age):
self.name = name
self.age = age
說明:寫在類中的函式,我們通常稱之為(物件的)方法,這些方法就是物件可以接收的訊息
class student(object):
"""第二步初始化,初始化自己
當你的類有一些公用變數的時候,你就可以初始化
初始化中經常放入公有的變數
"""def __init__(self,name):
"""在類中,一切的變數和函式都要印記(self)
"""self.name = name
def def1(self,num):
self.num = num
print(self.num)
print(self.name)
def def2(self):
print(self.num)
print(self.name)
if __name__ == "__main__":
#例項,類名帶括號「student()」,直接執行初始化函式
student = student('杜苗苗')
student.def1(100)
student.def2()
建立和使用物件
當我們定義好乙個類之後,可以通過下面的方式來建立物件並給物件發訊息
def main()
# 建立學生物件並指定姓名和年齡
stu1 = student('駱昊',38)
# 給物件發study訊息
stu1.study('python程式設計')
if __name__ == ' __main__':
main()
訪問可見性問題
#私有變數,變數名前面加「——」
#如果非要使用私有變數,那麼可以使用dir(class())f去檢視它真正的名字
私有變數/函式,在類內部可以直接呼叫
#如果你想體現乙個變數/函式特別重要你可以使用「-」
class test:
def __init__(self,foo):
self.__foo = foo
def __bar(self):
print(self.__foo)
print('__bar')
def main():
test = test('hello')
# attributeerror: 'test' object has no attribute '__bar'
test.__bar()
#attributeerror: 'test' object has no attribute '__foo'
print(test.__foo)
if __name__ == "__main__":
main()
物件導向的支柱
物件導向有三大支柱:封裝、繼承和多型。
靜態方法和類方法
from math import sqrt
class ********(object):
def __init__(self,a,b,c):
self._a = a
self._b = b
self._c = c
@staticmethod
def is_valid(a,b,c):
return a + b > c and b + c >a and a + c > b
def perimeter(self):
return self._a + self._b + self._c
def area(self):
half = self.perimeter() / 2
return sqrt(half * (half -self._a) *
(half - self._b) * (half -self._c))
類之間的關係
簡單的說,類和類之間的關係有三種:is-a、has-a和use-a關係。
繼承和多型
在已有類的基礎上建立新類,這其中的一種做法就是讓乙個類從另乙個類那裡將屬性和方法直接繼承下來,從而減少重複**的編寫。提供繼承資訊的我們稱之為父類,也叫超類或基類;得到繼承資訊的我們稱之為子類,也叫派生類或衍生類。子類除了繼承父類提供的屬性和方法,還可以定義自己特有的屬性和方法,所以子模擬父類擁有的更多的能力,在實際開發中,我們經常會用子類物件去替換掉乙個父類物件,這是物件導向程式設計中乙個常見的行為,對應的原則稱之為黎克特制替換原則。
學習python 第四天
python 迴圈結構 迴圈結構可以輕鬆的控制某件事重複 再重複的發生。在python中構造迴圈結構有兩種做法,一種是for in迴圈,一種是while迴圈。for in迴圈 如果明確的知道迴圈執行的次數或者是要對乙個容器進行迭代 後面會講到 那麼我們推薦使用for in迴圈 用for迴圈實現1 1...
Python學習 第四天
map函式可以對序列中個每個值進行某種批量轉化操作,然後將結果作為迭代器iterator返回,迭代器可以利用for迴圈或者next 函式來訪問每個值。map函式接收兩個引數,乙個是函式f,乙個是iterator,map在iterable的每個元素上依次執行函式f,並把結果作為新的iterator迭代...
學習python,第四天
echo 內容 a 將內容放到檔案裡 ls lh a 會覆蓋原有內容 echo a 追加到末尾 不會覆蓋原有內容 管道 ls lha more shutdown關機 shutdown now立刻關機 shutdown r重啟 shutdown c取消 shutdown 10 00十點關機 shutd...