當前位置:首頁 » 編程語言 » python類的例子

python類的例子

發布時間: 2022-10-08 01:58:45

1. python中類與實例的其他說明解釋

9.4. 一些說明
數據屬性會覆蓋同名的方法屬性。為了避免意外的名稱沖突,這在大型程序中是極難發現的 Bug,使用一些約定來減少沖突的機會是明智的。可能的約定包括:大寫方法名稱的首字母,使用一個唯一的小字元串(也許只是一個下劃線)作為數據屬性名稱的前綴,或者方法使用動詞而數據屬性使用名詞。
數據屬性可以被方法引用,也可以由一個對象的普通用戶(客戶)使用。換句話說,類不能用來實現純凈的數據類型。事實上,Python 中不可能強制隱藏數據——一切基於約定(如果需要,使用 C 編寫的 Python 實現可以完全隱藏實現細節並控制對象的訪問。這可以用來通過 C 語言擴展 Python)。
客戶應該謹慎的使用數據屬性——客戶可能通過踐踏他們的數據屬性而使那些由方法維護的常量變得混亂。注意:只要能避免沖突,客戶可以向一個實例對象添加他們自己的數據屬性,而不會影響方法的正確性——再次強調,命名約定可以避免很多麻煩。
從方法內部引用數據屬性(或其他方法)並沒有快捷方式。我覺得這實際上增加了方法的可讀性:當瀏覽一個方法時,在局部變數和實例變數之間不會出現令人費解的情況。
一般,方法的第一個參數被命名為 self。這僅僅是一個約定:對 Python 而言,名稱 self 絕對沒有任何特殊含義。(但是請注意:如果不遵循這個約定,對其他的 Python 程序員而言你的代碼可讀性就會變差,而且有些 類查看器 程序也可能是遵循此約定編寫的。)
類屬性的任何函數對象都為那個類的實例定義了一個方法。函數定義代碼不一定非得定義在類中:也可以將一個函數對象賦值給類中的一個局部變數。例如:
# Function defined outside the class
def f1(self, x, y):
return min(x, x+y)
class C:
f = f1
def g(self):
return 'hello world'
h = g
現在 f, g 和 h 都是類 C 的屬性,引用的都是函數對象,因此它們都是 C 實例的方法-- h 嚴格等於 g 。要注意的是這種習慣通常只會迷惑程序的讀者。

2. python什麼是類,對象,實例

類和對象
對象是什麼?

對象=屬性(靜態)+方法(動態);

屬性一般是一個個變數;方法是一個個函數;

#類的屬性 就是 類變數

#實例變數:定義在方法中的變數,只作用於當前實例的類。

例子:

class Turtle:#python 中類名約定以大寫字母開頭
'''關於類的簡單例子。。。'''
#屬性 == 類變數
color ="green"
weight="10kg"
legs=4
shell=True
mouth='big'
#方法
def climb(self):
self.name = "test" #實例變數:定義在方法中的變數,只作用於當前實例的類。
print("我在很努力爬。")
def run(self):
print('我在很努力跑。')
def bite(self):
print('我要要要要要')
def sleep(self):
print('我要睡覺啦。')
#創建一個實例對象也就是類的實例化!
tt =Turtle() #類的實例化,也就是創建一個對象,類名約定大寫字母開頭
tt.bite() #創建好類後就能調用類裡面的方法叻;
tt.sleep()

3. python類的定義與使用是什麼

類Class:用來描述具體相同的屬性和方法的對象的集合。定義了該集合中每個對象所共有的屬性和方法。對象是類的示例。

類定義完成時(正常退出),就創建了一個 類對象。基本上它是對類定義創建的命名空間進行了一個包裝;我們在下一節進一步學習類對象的知識。原始的局部作用域(類定義引入之前生效的那個)得到恢復,類對象在這里綁定到類定義頭部的類名(例子中是 ClassName )。

基本語法

Python的設計目標之一是讓代碼具備高度的可閱讀性。它設計時盡量使用其它語言經常使用的標點符號和英文單字,讓代碼看起來整潔美觀。它不像其他的靜態語言如C、Pascal那樣需要重復書寫聲明語句,也不像它們的語法那樣經常有特殊情況和意外。

以上內容參考:網路-Python

4. 四、 python中的數據類型——列表

列表是一種有序的集合,有點類似c裡面的數組。它的特點是,可以隨時向裡面添加或刪除其中的元素,在python中經常用來存放數據。列表的特點是中括弧,內部元素用逗號隔開。

在這個列表中,可以放進去任何元素,不論你的元素是字元串、整型、浮點型、還是布爾值、空值,包括列表什麼的,都可以放進去。
元素與元素之間,用逗號隔開。

列表會為每個元素分配序號,這個序號代表它的位置,稱為索引(index),第一個元素的位置是0,第二個元素是1,以此類推。

使用索引獲取列表中的值時,需要使用中括弧來訪問,在中括弧前面加上列表名,中括弧內部是元素的索引。
0代表第一個元素的位置,1代表第二個,-1代表倒數第一個,-2代表倒數第二個

使用 len() 函數,可以查看列表裡面有多少個元素

在python中,列表的操作是非常的靈活的,我們可以向其中添加或刪除元素。
添加使用 list.append() 函數

list.append() 函數是將元素插入到列表的末尾,當我們想在特定位置插入元素時可以使用 list.insert() 函數

list.insert() 函數接受兩個參數,第一個參數是插入位置,第二個參數是要插入的元素。

需要注意的是,在使用append和insert時,必須在前面註明要操作的列表。就像上面的例子,我們要操作classmates這個列表,所以必須寫成 classmates.append() 或 classmates.insert() ,如果不這么寫,計算機就不知道你要往哪個列表中加入元素。

沒有特殊情況的話,推薦使用append()函數添加元素,因為使用append的時候,元素默認加在列表尾部,不會造成其他元素索引值的改變。如果使用insert的話,就像上面的insert(1,'Tom'),在位置1插入'Tom'後,Tom後面所有的元素,索引值都加了一個1,列表中元素越多,受影響的程度越大,因此使用append()函數要比insert()函數更快。

刪除列表中元素的方法有三種

del後面需要用索引的方式表明要刪除的元素,也就是上面的例子,names[1]代表names中的第二個元素,使用del即可刪除

list.pop() 函數與del差不多,都是使用索引值進行刪除,只不過寫法不同。
我們可以發現,執行 names.pop(1) 後,python shell列印出了第二個元素的值,也就是我們要刪除的那個值,這是因為 pop() 這個函數,是有返回值的,有時候我們需要使用這個值,這個時候就可以用變數存起來。

這樣我們就可以通過調用a而使用剛才刪掉的元素了。

list.remove() 函數的作用是刪除第一個匹配的元素,上面的例子中,names這個列表裡面,有兩個'Bob',remove函數只刪除了第一個'Bob'。這就是 list.remove() 函數的特點。

有時候我們想使用列表的前10個元素,或者前n個元素,這時候就應該使用列表的切片。

切片和索引類似,都是使用中括弧,區別是,索引中的中括弧裡面只有一個數,而切片不同。切片是切割列表,形成切割下來的部分形成新的列表。

切片: list[start:end:[step=1]] ,這就是切片的表達式,要求start和end兩者必須有一個,step不是可以不指定,不指定的時候默認為1。

切片該怎麼理解呢,start就是開始的位置,end就是結束的位置。切片有個特點是「取前不取後」,看上面那個例子可以發現,1作為start,3作為end,1代表第二個元素,3代表第四個元素,列表切片的時候,是不取後面的那個數字對應的元素的,也就是不取第四個元素,所以names[1:3]只取了第二個元素和第三個元素,這就是所謂的取前不取後。

再看下一個例子。

當不指定start或者end的時候,start默認為0,end默認為最後一個元素的索引值+1,因為「取前不取後」,要想取到最後一個元素,必須加個1才行。
上例中,用 len(numbers) 表示了最後一個元素的索引值,因為索引值從0開始,最後一個元素的索引值一定是列表內元素個數-1,根據「取前不取後」,在end位置上的數字應該+1,所以最後就等於 len(numbers) 了。
當不設定start和end的時候,就默認取所有的元素了。

當加入step,這個選項後,step代表步長,默認為1,設定成2的時候,就是隔一個取一個,設定成3時就是隔兩個取一個。
上例中,第一個切片,start和end均未設定,因此從第一個元素開始,隔一個取一個,得到了所有奇數位置的元素。
第二個切片,start設定為了1,因此取了所有偶數位置的元素。

3在列表中,0不在列表中,所以 3 in a 是True,而 0 in a 是False

更多關於列表的信息可以通過使用 help(list) 查看幫助文檔。

5. Python的類和對象入門

本文來說說Python中的類與對象,Python這門語言是無處不對象,如果你曾淺要了解過Python,你應該聽過Python是一種面向對象編程的語言,所以你經常可能會看到面向「對象」編程這類段子,而面向對象編程的語言都會有三大特徵:封裝、繼承、多態。

我們平時接觸到的很多函數、方法的操作都具有這些性質,我們只是會用,但還沒有去深入了解它的本質,下面就介紹一下關於類和對象的相關知識。

封裝這個概念應該並不陌生,比如我們把一些數據封裝成一個列表,這就屬於數據封裝,我們也可以將一些代碼語句封裝成一個函數方便調用,這就是代碼的封裝,我們也可以將數據和代碼封裝在一起。用術語表示的話,就是可以將屬性和方法進行封裝,從而得到對象。

首先我們可以定義一個類,這個類中有屬性和方法,但有的夥伴會比較好奇,屬性和方法不是會封裝成對象嘛,為什麼又變成類了?舉個例子,類就好比是一個毛坯房,而對象是在毛坯房的基礎上改造成的精裝房。

在類定義完成時就創建了一個類對象,它是對類定義創建的命名空間進行了一個包裝。類對象支持兩種操作:屬性引用和實例化。

屬性引用的語法就是一般的標准語法:obj.name。比如XiaoMing.height和XiaoMing.run就是屬性引用,前者會返回一條數據,而後者會返回一個方法對象。

這里也支持對類屬性進行賦值操作,比如為類中的weight屬性賦予一個新值。

而類的實例化可以將類對象看作成一個無參函數的賦值給一個局部變數,如下:

ming就是由類對象實例化後創建的一個實例對象,通過實例對象也可以調用類中的屬性和方法。

類在實例化過程中並不都是像上面例子一樣簡單的,一般類都會傾向將實例對象創建為有初始狀態的,所以在類中可能會定義一個__init__的魔法方法,這個方法就可以幫助接收、傳入參數。

而一個類如果定義了__init__方法,那麼在類對象實例化的過程中就會自動為新創建的實例化對象調用__init__方法,請看下面這個例子。

可以看到在__init__()中傳入了參數x和y,然後在print_coor中需要接收參數x和y,接下來通過實例化這個類對象,驗證一下參數是否能通過__init__()傳遞到類的實例化操作中。

所謂繼承就是一個新類在另一個類的基礎上構建而成,這個新類被稱作子類或者派生類,而另一個類被稱作父類、基類或者超類,而子類會繼承父類中已有的一些屬性和方法。

比如上面這個例子,我並沒有將list_定義成一個列表,但它卻能調用append方法。原因是類Mylist繼承於list這個基類,而list_又是Mylist的一個實例化對象,所以list_也會擁有父類list擁有的方法。當然可以通過自定義類的形式實現兩個類之間的繼承關系,我們定義Parent和Child兩個類,Child中沒有任何屬性和方法,只是繼承於父類Parent。

當子類中定義了與父類中同名的方法或者屬性,則會自動覆蓋父類對應的方法或屬性,還是用上面這個例子實現一下,方便理解。

可以看到子類Child中多了一個和父類Parent同名的方法,再實例化子類並調用這個方法時,最後調用的是子類中的方法。Python中繼承也允許多重繼承,也就是說一個子類可以繼承多個父類中的屬性和方法,但是這類操作會導致代碼混亂,所以大多數情況下不推薦使用,這里就不過多介紹了。

多態比較簡單,比如定義兩個類,這兩個類沒有任何關系,只是兩個類中有同名的方法,而當兩個類的實例對象分別調用這個方法時,不同類的實例對象調用的方法也是不同的。

上面這兩個類中都有introce方法,我們可以實例化一下兩個類,利用實例對象調用這個方法實現一下多態。

判斷一個類是否是另一個類的子類,如果是則返回True,反之則返回False。

需要注意的有兩點:

判斷一個對象是否為一個類的實例對象,如果是則返回True,反之則返回False。

需要注意的有兩點:

判斷一個實例對象中是否包含一個屬性,如果是則返回True,反之則返回False。

需要注意的是第二個參數name必須為字元串形式傳入,如果不是則會返回False。

6. 1.Python的一個小例子---daydayup

提要:最近發現自己似乎並沒有很好的建立起程序的思維,在學習 Python語言程序設計_中國大學MOOC(慕課) (icourse163.org) 時有些例子還蠻有趣的,因此進行記錄。

每天努力1%,365天後自己是什麼樣呢?
每天懈怠1%,365天後自己又是什麼樣的?
如果一周的某幾天加倍努力,某幾天懈怠又是什麼結果呢?

對於前兩個問題使用數學式子表示為:(1±0.01)^365,使用程序可以直接使用 pow(1±0.01, 365)
第三個問題不是那麼好直接用數學來表示,如果用程序的思維,我們抽象輸入、輸出和處理三個部分。
1.輸入:一周中努力的天數,努力的倍數;懈怠的天數,懈怠的倍數
2.輸出:輸出365天後努力與懈怠的結果
3.處理:寫一個循環,我們可以先努力後懈怠,那麼當天數為努力的日子的時候:執行 (1+倍數);當天數為懈怠的時候:執行 (1-倍數)。當循環完365天就把結果輸出。

這里把當前的能力設為1,在365天循環之後輸出一年以後增長了多少倍。循環往往進行累乘、累加。以一周為周期,所以需要對7取余作為判斷。這里計算出的答案與課程中會有差異,因為課程中把周日周天設為0和6,而循環從0開始,那麼它表示先懈怠一天然後努力5天然後再懈怠一天,而365/7餘1,那麼兩種方法最後一天存在懈怠和努力的差異,因此結果不同。

因為計算機計算是非常快的,因此對於一些題可以採取窮舉法。
小A:工作日努力,周末懈怠1%
小B:每天努力1%
那麼小A工作日要多努力才能趕上小B?

假設小A從1%開始計算,結果小於小B,那麼努力值+0.001,直到結果>=小B,將當前努力值輸出。
把dayDayup函數進行調用得到365天後的結果,因為其輸入參數需要變化,因此用變數進行替代。不斷進行判斷-更新參數值-判斷的過程,將可能進行一一搜索。

7. python類的例子

答: Python中對應一個類的例子如下所示。

8. python中類的實例對象的理解總結

9.3.3. 實例對象
現在我們可以用實例對象作什麼?實例對象唯一可用的操作就是屬性引用。有兩種有效的屬性名。
數據屬性 相當於 Smalltalk 中的「實例變數」或 C++ 中的「數據成員」。和局部變數一樣,數據屬性不需要聲明,第一次使用時它們就會生成。例如,如果 x 是前面創建的 MyClass 實例,下面這段代碼會列印出 16 而在堆棧中留下多餘的東西:
x.counter = 1
while x.counter < 10:
x.counter = x.counter * 2
print(x.counter)
del x.counter
另一種為實例對象所接受的引用屬性是 方法。方法是「屬於」一個對象的函數。(在 Python 中,方法不止是類實例所獨有:其它類型的對象也可有方法。例如,鏈表對象有 append,insert,remove,sort 等等方法。然而,在後面的介紹中,除非特別說明,我們提到的方法特指類方法)
實例對象的有效名稱依賴於它的類。按照定義,類中所有(用戶定義)的函數對象對應它的實例中的方法。所以在我們的例子中,x.f 是一個有效的方法引用,因為 MyClass.f 是一個函數。但 x.i 不是,因為 MyClass.i 不是函數。不過 x.f 和 MyClass.f 不同,它是一個 方法對象 ,不是一個函數對象。

9. Python中編寫一個類,包含一個變數,一個方法;再編寫一個子類,繼承前一個類

摘要 使用 class 語句來創建一個新類,class 之後為類的名稱並以冒號結尾:class ClassName:

熱點內容
骨演算法算男女 發布:2022-12-09 00:43:26 瀏覽:643
長虹d27手機出廠密碼是多少 發布:2022-12-09 00:40:43 瀏覽:770
編譯後的代碼可以刪嗎 發布:2022-12-09 00:34:12 瀏覽:143
rankpython 發布:2022-12-09 00:24:46 瀏覽:95
空氣壓縮熱學 發布:2022-12-09 00:22:48 瀏覽:413
編譯技術發展史 發布:2022-12-09 00:19:57 瀏覽:202
android播放器源碼 發布:2022-12-09 00:15:30 瀏覽:640
怎麼快速配置多台相同配置交換機 發布:2022-12-09 00:12:08 瀏覽:549
linux修改文件許可權命令 發布:2022-12-09 00:10:15 瀏覽:177
清理微信緩存聊天記錄 發布:2022-12-09 00:07:46 瀏覽:879