Python 教程:從零到大師

首先, 什么是Python? 用python作者Guido van Rossum自己的話來說泊愧,Python是這樣的一門語言:

"它是一門高級編程語言, 它的核心設(shè)計理念是讓所有代碼變得更易閱讀钾麸,并給開發(fā)者們提供一種“僅僅幾行代碼就能編寫編程邏輯”的語法别瞭。

那么,對我來說缕陕,讓我學(xué)習(xí)Python的第一個理由峻仇,就是它漂亮而優(yōu)雅,能夠順暢自然地實(shí)現(xiàn)我的想法帽芽。

另一個理由,就是Python支持多種編程領(lǐng)域翔冀,如:

數(shù)據(jù)科學(xué)

web開發(fā)

機(jī)器學(xué)習(xí)

比如导街,Quora、Pinterest纤子、Spotify搬瑰,這些項(xiàng)目,都是使用python開發(fā)他們的后端控硼。

那么泽论,接下來,就開始學(xué)習(xí)Python吧象颖!

基礎(chǔ)

1. 變量

可以把變量簡單理解為一個存儲值的單詞佩厚。

講道理,變量是什么就不用特地解釋了…大家都懂说订。

在Python里面抄瓦,定義變量、給變量賦值都非常簡單陶冷。比如你想把數(shù)字1存儲到一個變量里面钙姊,而這個變量名叫one,那么埂伦,你只需要這樣:

one =1

非常簡單吧? 舉一反三煞额,完全可以自由發(fā)揮,就像下面沾谜,把2賦值給two膊毁,把10000賦值給some_number:

two =2

some_number =10000

當(dāng)然,除了整型以外基跑,我們也可以設(shè)置布爾類型婚温、字符串、單精度媳否,以及一些其他數(shù)據(jù)類型栅螟。如下:

# booleans

true_boolean =True

false_boolean =False

# string

my_name ="Leandro Tk"

# float

book_price =15.80

2.流程控制: 分支語句

if,這個語句用來判斷是否符合條件篱竭,它的后面緊跟著邏輯表達(dá)式力图,表達(dá)式最后的值為True或False,如果是true掺逼,則執(zhí)行if里面的語句吃媒。如下:

ifTrue:

print("Hello Python If")

if2>1:

print("2 is greater than 1")

因?yàn)?大于1,條件成立,所以print語句就會被執(zhí)行

當(dāng)然晓折,如果不滿足條件惑朦,那么else就派上用場了!

如果漓概,if后面跟著的邏輯表達(dá)式最終值是false漾月,則會運(yùn)行else里面的程序,如下:

if1>2:

print("1 is greater than 2")

else:

print("1 is not greater than 2")

你也可以使用elif胃珍,是else if的縮寫梁肿,但千萬別寫錯~

if1>2:

print("1 is greater than 2")

elif2>1:

print("1 is not greater than 2")

else:

print("1 is equal to 2")

3. 循環(huán) /?迭代器

在Python中,我們有多種迭代的方式觅彰,我在這里說兩種:

While 循環(huán): 當(dāng)邏輯表達(dá)式為true的時候吩蔑,while下縮進(jìn)的代碼塊就會被循環(huán)執(zhí)行. 所以下面的代碼片段,將會從1打印到10填抬。

num =1

whilenum <=10:

print(num)

num +=1

上面這種循環(huán)方式烛芬,需要一個循環(huán)條件,如果循環(huán)條件是true飒责,就會繼續(xù)進(jìn)行迭代赘娄,在上面的例子中,當(dāng)num變成11的時候宏蛉,循環(huán)條件就會等于False"

再看看下面的基礎(chǔ)代碼塊遣臼,以便于理解:

loop_condition =True

whileloop_condition:

print("Loop Condition keeps: %s"%(loop_condition))

loop_condition =False

只要循環(huán)條件為True,就會被一直循環(huán)執(zhí)行拾并,直到循環(huán)條件變成False

For循環(huán): 與其他語言一樣揍堰,這用于計次循環(huán),它循環(huán)的次數(shù)嗅义,取決于后面那個range方法屏歹。

range,代表從在循環(huán)里之碗,它用于表示從x到n蝙眶,如下,就是從1到11继控,第三個參數(shù)可空械馆,意思是每次遞進(jìn)的加數(shù)胖眷,默認(rèn)每循環(huán)一次給i加1武通,填2的話,就給i加2

foriinrange(1,11):

print(i)

列表: 集合 | 數(shù)組 | 數(shù)據(jù)結(jié)構(gòu)

想象一下珊搀,你想把整數(shù)1存儲在一個變量中冶忱。但也許現(xiàn)在你想要存儲 2 和 3,4境析,5 囚枪。派诬。。

我是否有另一種方法來存儲我想要的所有整數(shù)链沼,但不是以百萬計的變量默赂?你猜對了 —— 確實(shí)有另一種方法來存儲它們。

List?是一個可以用來存儲一列值的集合(比如你想要的這些整數(shù))括勺。那么讓我們使用它:

my_integers = [1,2,3,4,5]

這真的很簡單缆八,我們創(chuàng)建了一個數(shù)組并將其存儲到my_integer里。

但是也許你在問:『 我怎樣才能從這個列表中獲得值疾捍?』

很好的問題奈辰。?List?有一個叫做索引的概念。第一個元素獲取索引 0 (零)乱豆。第二個取 1 奖恰,依此類推。明白了吧宛裕。

為了使其更清楚瑟啃,我們可以用它的索引來表示數(shù)組和每個元素。我可以畫出來:

使用 Python 語法续滋,它也很容易理解:

my_integers = [5,7,1,3,4]

print(my_integers[0])# 5

print(my_integers[1])# 7

print(my_integers[4])# 4

想象一下現(xiàn)在你不想存儲整數(shù)了翰守。你只是想存儲字符串,就像你親戚名字的列表一樣疲酌±澹看起來像這樣:

relatives_names = [

"Toshiaki",

"Juliana",

"Yuji",

"Bruno",

"Kaio"

]

print(relatives_names[4])# Kaio

它的工作方式與整數(shù)相同,漂亮朗恳。

我們剛剛了解到?Lists?索引是如何工作的湿颅。但是我仍然需要告訴你如何將一個元素添加到?List?數(shù)據(jù)結(jié)構(gòu)(一個項(xiàng)目到列表)。

添加一個值到?List?最常見的方法是?append?粥诫。讓我們看看他是如何工作的:

bookshelf = []

bookshelf.append("The Effective Engineer")

bookshelf.append("The 4 Hour Work Week")

print(bookshelf[0])# The Effective Engineer

print(bookshelf[1])# The 4 Hour Work Week

append??非常的簡單油航。您只需要將元素(例如『 The Effective Engineer 』)作為『 append 』參數(shù)應(yīng)用即可。

那么怀浆,關(guān)于?Lists?到這里就結(jié)束了谊囚,讓我們來談?wù)劻硪粋€數(shù)據(jù)結(jié)構(gòu)。

字典: 鍵-值 數(shù)據(jù)結(jié)構(gòu)

現(xiàn)在我們知道?Lists?使用整數(shù)來索引. 但是如果我們不想使用整數(shù)來索引呢? 一些其他的數(shù)據(jù)結(jié)構(gòu)可以使用數(shù)字执赡,字符串或者其他的類型來做索引.

讓我們來學(xué)習(xí)?Dictionary?數(shù)據(jù)結(jié)構(gòu).?Dictionary?是一個鍵值對集合. 它長下面這樣:

dictionary_example = {

"key1":"value1",

"key2":"value2",

"key3":"value3"

}

鍵用來索引到值. 那么我們?nèi)绾卧L問?Dictionary的值呢? 你猜對啦?---?使用鍵. 試一下吧:

dictionary_tk = {

"name":"Leandro",

"nickname":"Tk",

"nationality":"Brazilian"

}

print("My name is %s"%(dictionary_tk["name"]))# My name is Leandro

print("But you can call me %s"%(dictionary_tk["nickname"]))# But you can call me Tk

print("And by the way I'm %s"%(dictionary_tk["nationality"]))# And by the way I'm Brazilian

我創(chuàng)建了一個關(guān)于我的?Dictionary. 我的名字, 昵稱和國籍. 這些屬性是Dictionary?的鍵.

我們知道訪問?List?使用下標(biāo), 我們在這也使用下標(biāo) ( ?Dictionary?中的鍵的內(nèi)容) 來訪問存在?Dictionary中的值.

在例子中, 我打印出了存在?Dictionary中的所有關(guān)于我的短語. 非常簡單滴~?

另一件關(guān)于?Dictionary非常帥氣的事情就是我們可以使用任何東西來做為字典的值.在我創(chuàng)建的Dictionary中, 我想添加鍵為?"age" 且值為我的整數(shù)年齡進(jìn)去:

dictionary_tk = {

"name":"Leandro",

"nickname":"Tk",

"nationality":"Brazilian",

"age":24

}

print("My name is %s"%(dictionary_tk["name"]))# My name is Leandro

print("But you can call me %s"%(dictionary_tk["nickname"]))# But you can call me Tk

print("And by the way I'm %i and %s"%(dictionary_tk["age"], dictionary_tk["nationality"]))# And by the way I'm Brazilian

這里我們有一個鍵?(age)?值?(24) 對 使用字符串來作為鍵镰踏,整數(shù)來作為值.

像我們學(xué)習(xí)?Lists一樣,讓我們來學(xué)習(xí)如何在?Dictionary中添加元素.在Dictionary中, 一個鍵指向一個值是很重要的. 這就是為什么我們在添加元素的時候討論它:

dictionary_tk = {

"name":"Leandro",

"nickname":"Tk",

"nationality":"Brazilian"

}

dictionary_tk['age'] =24

print(dictionary_tk)# {'nationality': 'Brazilian', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}

我們只需要指定一個值到?Dictionary的鍵上. 一點(diǎn)也不復(fù)雜沙合,484啊?

迭代:循環(huán)Python中的數(shù)據(jù)結(jié)構(gòu)

當(dāng)我們在學(xué)習(xí)?Python基礎(chǔ)時, 會發(fā)現(xiàn)列表的迭代是一件十分簡單的事情 奠伪,通常我們Python開發(fā)者會使用For來循環(huán)迭代它. 現(xiàn)在讓我們嘗試一下:

bookshelf = [

"The Effective Engineer",

"The 4 hours work week",

"Zero to One",

"Lean Startup",

"Hooked"

]

forbookinbookshelf:

print(book)

如你所見我們已經(jīng)對書架中的書進(jìn)行了for操作,我們輸出打印了其中的書(當(dāng)然你可以在循環(huán)中對它們做任何事情)。簡單而又直觀绊率,這就是Python谨敛。

同樣對于哈希類型的數(shù)據(jù)結(jié)構(gòu),比如像是Python中的字典滤否,我們同樣也可以對其使用for循環(huán)進(jìn)行迭代操作脸狸,但是此時我們則需要用到key:

dictionary = {"some_key":"some_value"}

forkeyindictionary:

print("%s --> %s"%(key, dictionary[key]))

# some_key --> some_value

這是一個循環(huán)字典類型變量的小例子,對于dictionary變量我們使用for循環(huán)操作其中的key藐俺,接著我們打印輸出他的key以及其相對應(yīng)匹配的value值肥惭。

當(dāng)然我們還有另外一種方法去實(shí)現(xiàn)它,就是去使用iteritems:

dictionary = {"some_key":"some_value"}

forkey, valueindictionary.items():

print("%s --> %s"%(key, value))

# some_key --> some_value

你看我們已經(jīng)命名了兩個參數(shù)key,value紊搪,但這并不是必須的蜜葱,你甚至可以給它們起任何一個名字^.^,讓我們來看一下:

dictionary_tk = {

"name":"Leandro",

"nickname":"Tk",

"nationality":"Brazilian",

"age":24

}

forattribute, valueindictionary_tk.items():

print("My %s is %s"%(attribute, value))

# My name is Leandro

# My nickname is Tk

# My nationality is Brazilian

# My age is 24

哈哈耀石,可以看到我們已經(jīng)使用了attribute作為了Dictionary的key參數(shù)牵囤,代碼運(yùn)行十分正確。贊滞伟!

類型與對象

一點(diǎn)基礎(chǔ)理論:

對象代表現(xiàn)實(shí)世界中像轎車揭鳞、狗、自行車這些事物梆奈。對象具有數(shù)據(jù)和行為兩個主要特征野崇。

在面向?qū)ο缶幊讨校覀儼褦?shù)據(jù)當(dāng)作屬性亩钟,把行為當(dāng)作方法乓梨。即:

數(shù)據(jù) → 屬性 和 行為 → 方法

類型是創(chuàng)造單個對象實(shí)例的藍(lán)本。在現(xiàn)實(shí)世界中清酥,我們經(jīng)常發(fā)現(xiàn)很多對象實(shí)例擁有相同的類型扶镀,比如轎車。他們都具有相同的構(gòu)造和模型(具有發(fā)動機(jī)焰轻,輪子臭觉,門等等)。每輛車都是根據(jù)同一張設(shè)計圖制作的辱志,并且具有相同的組成部分蝠筑。

Python 的面向?qū)ο缶幊棠J剑篛N

Python,作為一門面向?qū)ο缶幊痰恼Z言揩懒,具有類和對象的概念什乙。

類是藍(lán)圖,對象是模型旭从。

同樣稳强,一個類,它只是一個模型和悦,或者一種定義屬性和行為的方法(正如我們在理論部分所討論的)退疫。例如,車輛類有自己的屬性鸽素,定義什么是車輛褒繁。車輪的數(shù)量、能源的類型馍忽、座位容量和最大速度都是車輛的屬性棒坏。

考慮到這一點(diǎn),讓我們看看類的Python語法:

classVehicle:

pass

我們用一個類聲明來定義類?遭笋,僅此而已坝冕。很簡單,不是嗎瓦呼?

對象是一個類的實(shí)例喂窟,我們用命名類來創(chuàng)建一個實(shí)例。

car = Vehicle()

print(car)# <__main__.Vehicle instance at 0x7fb1de6c2638>

這里 ‘car’ 是 ‘Vehicle’ 類的一個對象(或者說實(shí)例)央串。

記住磨澡,我們的 ‘Vehicle’ 類有四個屬性:輪子數(shù)量,能源類型质和,座位容量稳摄,和最大速度。我們創(chuàng)建一個 ‘Vehicle’ 對象時設(shè)置所有這些屬性 饲宿。所以在這里厦酬,我們定義我們的類初始化時要接收數(shù)據(jù)時:

classVehicle:

def__init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):

self.number_of_wheels = number_of_wheels

self.type_of_tank = type_of_tank

self.seating_capacity = seating_capacity

self.maximum_velocity = maximum_velocity

我們使用了 ‘init’方法。我們稱它為構(gòu)造方法瘫想。所以創(chuàng)建 ‘vehicle’ 對象時可以定義這些屬性弃锐。假設(shè)我們喜歡Tesla Model S,我們要創(chuàng)建這種對象殿托。它有4個輪子霹菊,使用電能,有5個座位支竹,最大時速250km/h (155mph)

tesla_model_s = Vehicle(4,'electric',5,250)

4個“輪子”+電能“能源”+5個“座位”+250km/h“最大速度”旋廷。

所有屬性都設(shè)置完成了。但是我們?nèi)绾潍@取這些屬性值礼搁?我們發(fā)送一個消息到對象來問他們饶碘。我們稱之為方法. 方法是對象的行為. 讓我們來實(shí)現(xiàn)它:

classVehicle:

def__init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):

self.number_of_wheels = number_of_wheels

self.type_of_tank = type_of_tank

self.seating_capacity = seating_capacity

self.maximum_velocity = maximum_velocity

defnumber_of_wheels(self):

returnself.number_of_wheels

defset_number_of_wheels(self, number):

self.number_of_wheels = number

這里創(chuàng)建了兩個方法:?number_of_wheels?和?set_number_of_wheels. 我們稱它為?獲取?&?設(shè)置. 因?yàn)榈谝粋€獲取了屬性值,然后第二個設(shè)置了一個新的屬性值。

Python 中馒吴,我們可以用 “@property” (“decorator”) 去定義 "getters" 和 “setters”扎运。請看以下代碼:

classVehicle:

def__init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):

self.number_of_wheels = number_of_wheels

self.type_of_tank = type_of_tank

self.seating_capacity = seating_capacity

self.maximum_velocity = maximum_velocity

@property

defnumber_of_wheels(self):

returnself.number_of_wheels

@number_of_wheels.setter

defnumber_of_wheels(self, number):

self.number_of_wheels = number

同時瑟曲,我們可以使用這些方法作為屬性:

tesla_model_s = Vehicle(4,'electric',5,250)

print(tesla_model_s.number_of_wheels)# 4

tesla_model_s.number_of_wheels =2# setting number of wheels to 2

print(tesla_model_s.number_of_wheels)# 2

這個與定義方法有些許不同。這些方法的工作機(jī)制與屬性不同豪治。例如洞拨,當(dāng)我們設(shè)置輪子數(shù)量時,我們需要把2賦值給一個變量负拟,只需要設(shè)置 “number_of_wheels” 的值為2烦衣。這是一種寫 “pythonic”、 ”getter“掩浙、“setter” 代碼的方法花吟。

而且同時我們也可以使用其他方法,比如 “make_noise” 方法厨姚。請看下面的例子衅澈。

classVehicle:

def__init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):

self.number_of_wheels = number_of_wheels

self.type_of_tank = type_of_tank

self.seating_capacity = seating_capacity

self.maximum_velocity = maximum_velocity

defmake_noise(self):

print('VRUUUUUUUM')

當(dāng)我們調(diào)用這個方法時,它返回字符串?”VRRRRUUUUM“谬墙。

tesla_model_s = Vehicle(4,'electric',5,250)

tesla_model_s.make_noise()# VRUUUUUUUM

封裝:信息隱藏

封裝是一種限制直接訪問對象數(shù)據(jù)和方法的機(jī)制矾麻。但是它加快了對象方法中數(shù)據(jù)的訪問。

"封裝可以在定義中隱藏數(shù)據(jù)和函數(shù)成員芭梯,意味著從外部隱藏了對象定義中的內(nèi)部描述“--- Wikipedia

對象從外部隱藏了其內(nèi)部描述险耀。只有對象可以與它的內(nèi)部數(shù)據(jù)進(jìn)行交互。

首先玖喘,我們需要了解 “public” 和 “non-public” 變量實(shí)例的工作機(jī)制甩牺。

Public 變量實(shí)例

對于一個 Python 類型,我們可以使用構(gòu)造方法初始化一個公共變量實(shí)例累奈。我們看這個:

通過構(gòu)造方法:

classPerson:

def__init__(self, first_name):

self.first_name = first_name

這里我們使用 “first_name” 的值作為一個參數(shù)傳遞給公共變量實(shí)例贬派。

tk = Person('TK')

print(tk.first_name)# => TK

在類中:

classPerson:

first_name ='TK'

這里,我們不需要使用 “first_name” 作為一個參數(shù)澎媒,所有的對象實(shí)例都有一個用 “TK” 初始化的類屬性搞乏。

tk = Person()

print(tk.first_name)# => TK

漂亮。我們已經(jīng)學(xué)習(xí)到可以使用公共變量實(shí)例和類型屬性戒努。另一件關(guān)于 “public” 部分有趣的事情是我們可以管理它的變量的值请敦。我的意思是什么呢?我們的對象可以管理它的變量值:獲取和設(shè)置變量值储玫。

記住 “Person” 類侍筛,我們想要設(shè)置另一個值給它的 “first_name” 變量:

tk = Person('TK')

tk.first_name ='Kaio'

print(tk.first_name)# => Kaio

好了,我們剛剛設(shè)置了另一個值("kaio")給對象變量 “first_name”撒穷,并且它更新了它的值匣椰。就是這么簡單,因?yàn)檫@個 “public” 變量端礼,我們可以這樣做禽笑。

Non-public 變量實(shí)例

“在這里入录,我們不用‘私有‘來形容 ,因?yàn)樵赑ython中沒有真正“私有”的屬性(避免了一般情況下不必要的工作)佳镜×鸥澹”---?PEP 8

和公共變量實(shí)例一樣,我們可以在構(gòu)造函數(shù)或類內(nèi)部定義非公共變量實(shí)例邀杏。語法上的差異是:對于非公共變量實(shí)例,我們在變量名前加一道下劃線(_)唬血。

“在Python中望蜡,無法從內(nèi)部訪問‘私有’變量實(shí)例的對象是不存在的。但是拷恨,大多數(shù)Python代碼遵循一個慣例:一個名字前有一道下劃線的對象應(yīng)該被認(rèn)為是API中非公共的部分脖律,例如_spam,無論它是一個函數(shù)腕侄、方法或是數(shù)據(jù)成員小泉。”?---?Python Software Foundation

這是一個例子:

classPerson:

def__init__(self, first_name, email):

self.first_name = first_name

self._email = email

看到email變量了嗎冕杠?這就是定義一個非公共變量的方法微姊。

tk = Person('TK','tk@mail.com')

print(tk._email)# tk@mail.com

?所謂非公共變量只是一個慣例,沒有機(jī)制禁止我們從外部訪問并更新它分预。但按照慣例兢交,我們應(yīng)該把它作為API中非公共的部分來對待。

在類內(nèi)部笼痹,我們通常使用方法來操作“非公共變量”配喳,讓我們實(shí)現(xiàn)兩個方法(email和update_email)來理解。

classPerson:

def__init__(self, first_name, email):

self.first_name = first_name

self._email = email

defupdate_email(self, new_email):

self._email = new_email

defemail(self):

returnself._email

現(xiàn)在凳干,我們可以通過這些方法來訪問晴裹、更新非公共變量。

tk = Person('TK','tk@mail.com')

print(tk.email())# => tk@mail.com

tk._email ='new_tk@mail.com'

print(tk.email())# => tk@mail.com

tk.update_email('new_tk@mail.com')

print(tk.email())# => new_tk@mail.com

我們以first_name?TK 和?email?tk@mail.com 初始化一個Person對象救赐。

通過方法訪問非公共變量?email涧团,并打印出來。

從類外部直接設(shè)置一個新的email经磅。

我們應(yīng)該把非公共變量作為API中非公共的部分來對待少欺。

通過實(shí)例方法更新非公共變量?email。

成功馋贤!我們可以通過預(yù)設(shè)的方法來更新它赞别。

公共方法

通過?公共方法, 我們也可以在我們類的外部使用這些方法了:

classPerson:

def__init__(self, first_name, age):

self.first_name = first_name

self._age = age

defshow_age(self):

returnself._age

讓我們來試下:

tk = Person('TK',25)

print(tk.show_age())# => 25

贊——用起來沒有任何問題。

非公共方法

但是通過?非公共方法?我們卻無法做到這一點(diǎn)配乓。我們先來實(shí)現(xiàn)一個同樣的?Person?類仿滔,不過這回我們加個下劃線(_)來定義一個?show_age?的非公共方法惠毁。

classPerson:

def__init__(self, first_name, age):

self.first_name = first_name

self._age = age

def_show_age(self):

returnself._age

那么現(xiàn)在,我們來試著通過我們的對象調(diào)用這個?非公共方法:

tk = Person('TK',25)

print(tk._show_age())# => 25

我們可以訪問并且更新它崎页。?非公共方法?只是一類約定俗成的規(guī)定鞠绰,并且應(yīng)當(dāng)被看做接口中的非公共部分。

關(guān)于我們該怎么使用它飒焦,這有個例子:

classPerson:

def__init__(self, first_name, age):

self.first_name = first_name

self._age = age

defshow_age(self):

returnself._get_age()

def_get_age(self):

returnself._age

tk = Person('TK',25)

print(tk.show_age())# => 25

這里我們有一個?_get_age?非公共方法和一個show_age?公共方法蜈膨。show_age可以由我們的對象調(diào)用(在類的外部)而_get_age只能在我們類定義的內(nèi)部使用(內(nèi)部show_age方法)。但是再次強(qiáng)調(diào)下牺荠,這只是個約定俗成的規(guī)定翁巍。

封裝總結(jié)

通過封裝我們可以從外部隱藏對象的內(nèi)部表示。

繼承:行為和特征

某些對象具有共同點(diǎn):如行為和特征休雌。

例如灶壶,我從我父親那里繼承了一些特征和行為。我繼承了他的眼睛和頭發(fā)作為特征杈曲,繼承了他的急躁和內(nèi)向作為行為驰凛。

在面向?qū)ο缶幊讨校惸軌驈钠渌愔欣^承特征(數(shù)據(jù))和行為(方法)担扑。

讓我們看另外一個例子恰响。

假定一輛車。輪子的數(shù)量涌献、載客量和最高時速是車的所有屬性渔隶。那么我們可以認(rèn)為ElectricCar類從這個Car類中繼承了這些屬性。

classCar:

def__init__(self, number_of_wheels, seating_capacity, maximum_velocity):

self.number_of_wheels = number_of_wheels

self.seating_capacity = seating_capacity

self.maximum_velocity = maximum_velocity

我們的Car類實(shí)現(xiàn)之后:

my_car = Car(4,5,250)

print(my_car.number_of_wheels)

print(my_car.seating_capacity)

print(my_car.maximum_velocity)

一旦初始化后洁奈,我們可以使用所有已創(chuàng)建的實(shí)例變量间唉。很好。

在Python中我們可以將父類作為子類定義時的參數(shù)利术。一個ElectricCar類能從之前的Car類中繼承呈野。

classElectricCar(Car):

def__init__(self, number_of_wheels, seating_capacity, maximum_velocity):

Car.__init__(self, number_of_wheels, seating_capacity, maximum_velocity)

簡單如上。我們不需要實(shí)現(xiàn)任何其他的方法印叁,因?yàn)檫@個類已經(jīng)有了(繼承自Car類)被冒。讓我們確認(rèn)一下:

my_electric_car = ElectricCar(4,5,250)

print(my_electric_car.number_of_wheels)# => 4

print(my_electric_car.seating_capacity)# => 5

print(my_electric_car.maximum_velocity)# => 250

漂亮坪仇。

就到這里公浪!

關(guān)于Python基礎(chǔ),我們學(xué)會了很多:

變量

分支語句

循環(huán)語法

列表:集合 | 數(shù)組

字典:鍵值對的集合

如何迭代這些數(shù)據(jù)結(jié)構(gòu)

對象和類

用屬性作為對象的數(shù)據(jù)

用方法作為對象的行為

getters妓灌、setters 和 property 裝飾器

封裝:信息隱藏

繼承:行為和特征

恭喜跃洛!你完成了Python的這段密集的內(nèi)容率触。

堅持學(xué)習(xí),堅持編程汇竭,祝你玩得開心葱蝗!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末穴张,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子两曼,更是在濱河造成了極大的恐慌皂甘,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悼凑,死亡現(xiàn)場離奇詭異偿枕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)户辫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門渐夸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寸莫,你說我怎么就攤上這事捺萌〉刀” “怎么了膘茎?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長酷誓。 經(jīng)常有香客問我披坏,道長,這世上最難降的妖魔是什么盐数? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任棒拂,我火速辦了婚禮,結(jié)果婚禮上玫氢,老公的妹妹穿的比我還像新娘帚屉。我一直安慰自己,他們只是感情好漾峡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布攻旦。 她就那樣靜靜地躺著,像睡著了一般生逸。 火紅的嫁衣襯著肌膚如雪牢屋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天槽袄,我揣著相機(jī)與錄音烙无,去河邊找鬼。 笑死遍尺,一個胖子當(dāng)著我的面吹牛截酷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乾戏,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼合搅,長吁一口氣:“原來是場噩夢啊……” “哼多搀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灾部,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤康铭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赌髓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體从藤,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年锁蠕,在試婚紗的時候發(fā)現(xiàn)自己被綠了夷野。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡荣倾,死狀恐怖悯搔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舌仍,我是刑警寧澤妒貌,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站铸豁,受9級特大地震影響灌曙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜节芥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一在刺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧头镊,春花似錦蚣驼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至厂捞,卻和暖如春输玷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背靡馁。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工欲鹏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人臭墨。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓赔嚎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尤误,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容