對象的理解
對象的特征
封裝
信息隱蔽技術,例如BIF功能List我們可以執(zhí)行append、sort等,但是我們不知道里面實現(xiàn)的邏輯,這叫做封裝
繼承
子類自動共享父類之間數(shù)據(jù)和方法的機制,如果子類中定義父類同名的方法或?qū)傩裕瑒t會自動覆蓋父類對應的方法或?qū)傩?/span>
?
class A(list):
pass
B = A() #
B.append(1);B.append(2);B.append(3)
print(B)
打印結(jié)果:
[1, 2, 3] #B繼承了A列表對應的內(nèi)部函數(shù)功能
class B(A) #A是父類,意味class B繼承了父類功能
pass
多態(tài)
調(diào)用同樣的函數(shù)名,實現(xiàn)不一樣的功能
class A:
def fun(self):
print('我是小A')
class B:
def fun(self):
print('我是小B')
a = A();b = B()
print(a.fun(),b.fun())
打印結(jié)果:
我是小A
我是小B
面向?qū)ο?/h2>- OOA面向?qū)ο蠓治?/li>
- OOD面向?qū)ο笤O計
- OOP面向?qū)ο缶幊?/li>
面向?qū)ο笥袃蓚€重要概念,類(class)和實例(instance),類是抽象的模板,實例是根據(jù)類創(chuàng)建出來的一個個具體的“對象”
Python嚴格要求方法需要有實例才能被調(diào)用,這種限制其實就是Python所謂的綁定概念。
創(chuàng)建類
class Myclass(object): #pythong公約,類的第一個字母大寫
pass
創(chuàng)建實例A
A = Myclass()
創(chuàng)建實例的時候,把我們認為必須綁定的屬性強制填寫進去,self、__init__ ,例如在Student類時,把name、score等屬性綁上去
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
模塊的理解
- 容器:對數(shù)據(jù)的封裝,例如列表、元組、字符串、字典等
- 函數(shù):對語句的封裝
- 類:對方法和屬性的封裝,就是對函數(shù)和容器的封裝
- 模塊:每個保存的.py都是一個獨立的模塊,也就是程序
模塊的引入
模塊的作用將大的程序拆成小分支,易于測試和閱讀;一段好的模塊作為中間件反復被利用
引入方式:
第一種:import 模塊名
第二種:from 模塊名 import 函數(shù)名 #這個方法引用模塊函數(shù)等不需要再加模塊前綴
第三種:import 模塊名 as 新名字 #別名的方式可能在命名空間上最合適
模塊的路徑
def__init__方法是Python類中的一個無法繞開的方法。它相當于面向?qū)ο蠓椒ㄖ械?C++ 構造函數(shù)
當你創(chuàng)建一個類的新對象時,Python 會自動將你的參數(shù)傳遞給 __init__方法并調(diào)用它來初始化對象的屬性
__init__方法讓類初始化對象的屬性,沒有其他作用,它只在類中使用
if __name__ == ‘__main__’ #測試使用,這是主函數(shù)
一個python文件通常有兩種使用方法,
第一是作為腳本直接執(zhí)行
第二是 import 到其他的 python 腳本中被調(diào)用(模塊重用)執(zhí)行
因此 if __name__ == 'main': 的作用就是控制這兩種情況執(zhí)行代碼的過程
if __name__ == 'main': 下的代碼只有在第一種情況下(即文件作為腳本直接執(zhí)行)才會被執(zhí)行,而 import 到其他腳本中是不會被執(zhí)行的
搜索路徑 #import sys命令用于查詢模塊默認可導入的路徑,它是一個列表,因此可以通過sys.path.append導入指定模塊路徑
包(package)
1、創(chuàng)建一個文件夾,用于存放相關的模塊,文件夾的名字即包的名字;
2、在文件夾中創(chuàng)建一個__init__.py的模塊文件,內(nèi)容可以為空;
3、將相關的模塊放入文件夾中
本文摘自 :https://blog.51cto.com/l