當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

Python類和對(duì)象、模塊
2022-03-06 18:00:19

對(duì)象的理解

Python類和對(duì)象、模塊_封裝

Python類和對(duì)象、模塊_父類_02

對(duì)象的特征

Python類和對(duì)象、模塊_父類_03

封裝

信息隱蔽技術(shù),例如BIF功能List我們可以執(zhí)行append、sort等,但是我們不知道里面實(shí)現(xiàn)的邏輯,這叫做封裝

繼承

子類自動(dòng)共享父類之間數(shù)據(jù)和方法的機(jī)制,如果子類中定義父類同名的方法或?qū)傩?,則會(huì)自動(dòng)覆蓋父類對(duì)應(yīng)的方法或?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列表對(duì)應(yīng)的內(nèi)部函數(shù)功能

class B(A) #A是父類,意味class B繼承了父類功能
pass

多態(tài)

調(diào)用同樣的函數(shù)名,實(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>
  1. OOA面向?qū)ο蠓治?/li>
  2. OOD面向?qū)ο笤O(shè)計(jì)
  3. OOP面向?qū)ο缶幊?/li>

面向?qū)ο笥袃蓚€(gè)重要概念,類(class)和實(shí)例(instance),類是抽象的模板,實(shí)例是根據(jù)類創(chuàng)建出來的一個(gè)個(gè)具體的“對(duì)象”

Python類和對(duì)象、模塊_父類_04

Python嚴(yán)格要求方法需要有實(shí)例才能被調(diào)用,這種限制其實(shí)就是Python所謂的綁定概念。

創(chuàng)建類
class Myclass(object): #pythong公約,類的第一個(gè)字母大寫
pass
創(chuàng)建實(shí)例A
A = Myclass()

創(chuàng)建實(shí)例的時(shí)候,把我們認(rèn)為必須綁定的屬性強(qiáng)制填寫進(jìn)去,self、__init__ ,例如在Student類時(shí),把name、score等屬性綁上去

class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score


模塊的理解

  • 容器:對(duì)數(shù)據(jù)的封裝,例如列表、元組、字符串、字典等
  • 函數(shù):對(duì)語句的封裝
  • 類:對(duì)方法和屬性的封裝,就是對(duì)函數(shù)和容器的封裝
  • 模塊:每個(gè)保存的.py都是一個(gè)獨(dú)立的模塊,也就是程序

模塊的引入

模塊的作用將大的程序拆成小分支,易于測試和閱讀;一段好的模塊作為中間件反復(fù)被利用

引入方式:
第一種:import 模塊名
第二種:from 模塊名 import 函數(shù)名 #這個(gè)方法引用模塊函數(shù)等不需要再加模塊前綴
第三種:import 模塊名 as 新名字 #別名的方式可能在命名空間上最合適

模塊的路徑

def__init__方法是Python類中的一個(gè)無法繞開的方法。它相當(dāng)于面向?qū)ο蠓椒ㄖ械?C++ 構(gòu)造函數(shù)
當(dāng)你創(chuàng)建一個(gè)類的新對(duì)象時(shí),Python 會(huì)自動(dòng)將你的參數(shù)傳遞給 __init__方法并調(diào)用它來初始化對(duì)象的屬性
__init__方法讓類初始化對(duì)象的屬性,沒有其他作用,它只在類中使用


if __name__ == ‘__main__’ #測試使用,這是主函數(shù)
一個(gè)python文件通常有兩種使用方法,
第一是作為腳本直接執(zhí)行
第二是 import 到其他的 python 腳本中被調(diào)用(模塊重用)執(zhí)行
因此 if __name__ == 'main': 的作用就是控制這兩種情況執(zhí)行代碼的過程
if __name__ == 'main': 下的代碼只有在第一種情況下(即文件作為腳本直接執(zhí)行)才會(huì)被執(zhí)行,而 import 到其他腳本中是不會(huì)被執(zhí)行的

搜索路徑 #import sys命令用于查詢模塊默認(rèn)可導(dǎo)入的路徑,它是一個(gè)列表,因此可以通過sys.path.append導(dǎo)入指定模塊路徑

包(package)
1、創(chuàng)建一個(gè)文件夾,用于存放相關(guān)的模塊,文件夾的名字即包的名字;
2、在文件夾中創(chuàng)建一個(gè)__init__.py的模塊文件,內(nèi)容可以為空;
3、將相關(guān)的模塊放入文件夾中

Python類和對(duì)象、模塊_父類_05

本文摘自 :https://blog.51cto.com/l

開通會(huì)員,享受整站包年服務(wù)立即開通 >