python手把手入门_新手必看:手把手教你入门 Python
首先,Python是什么?據(jù)它的創(chuàng)始人Guido van Rossum而言,
“Python是一種高級(jí)編程語(yǔ)言,它的核心設(shè)計(jì)思想是代碼可讀性和允許程序員用幾行代碼來(lái)表達(dá)觀點(diǎn)的語(yǔ)法。”
就我而言,學(xué)習(xí)Python的首要理由是,它事實(shí)上是一種優(yōu)雅的編程語(yǔ)言,我可以很自然地進(jìn)行編程和表達(dá)想法。
另一個(gè)原因就是在許多方面都可以用它來(lái)編程:數(shù)據(jù)科學(xué)、web開發(fā)以及機(jī)器學(xué)習(xí)都會(huì)通過(guò)它而大放光彩。Quora, Pinterest and Spotify都用它來(lái)做后臺(tái)web開發(fā)。那么讓我們一起來(lái)了解一下吧!
基礎(chǔ)
1.變量
你可以把變量當(dāng)成存儲(chǔ)值的字符,就是這么簡(jiǎn)單。
Python中可以很容易地定義變量并對(duì)其進(jìn)行賦值。假如你想把數(shù)字1存入一個(gè)名為“one”的變量中。讓我們一起來(lái)做吧:
one= 1
這到底有多簡(jiǎn)單呢?你只需要把值1賦給變量“one”。
two= 2
some_number= 10000
而且你可以將其它任何值賦給其它任何變量。正如上表中你看到的那樣,變量“two”存儲(chǔ)整數(shù)2,“some_number”存儲(chǔ)10000。
除了整型,我們也可以使用布爾型(真/假)、字符串型、浮點(diǎn)型以及其它數(shù)據(jù)類型。
2.控制流:條件語(yǔ)句
“If”是一種判斷語(yǔ)句真假的表達(dá)。若為真,就執(zhí)行“if”內(nèi)部語(yǔ)句。比如:
ifTrue: print("Hello Python If")
if2 > 1: print("2 is greater than 1")
2比1大,因此就執(zhí)行“print”代碼。
如果“if”語(yǔ)句為假就會(huì)執(zhí)行“else”語(yǔ)句。
if1 > 2:
print("1 is greater than 2")
else:
print("1 is not greater than 2")
1不大于2,因此就會(huì)執(zhí)行“else”內(nèi)部語(yǔ)句。
你也可以使用“elif”語(yǔ)句:
if1 > 2:
print("1 is greater than 2")elif 2 > 1:
print("1 is not greater than 2")
else:
print("1 is equal to 2")
3.循環(huán)/迭代
Python中有多重循環(huán)方法,我會(huì)提及兩種:while和for。
while循環(huán):當(dāng)語(yǔ)句為真時(shí),將會(huì)執(zhí)行內(nèi)部的代碼塊。因此代碼將會(huì)輸出1到10.
num= 1
whilenum<= 10:
print(num)
num+= 1
while循環(huán)需要“循環(huán)條件”,若它為真就會(huì)執(zhí)行循環(huán)。在本例中,當(dāng)
數(shù)字為11時(shí),循環(huán)條件為假。
另一種基本代碼更容易理解:
loop_condition = True
whileloop_condition:
print("Loop Condition keeps: %s"%(loop_condition)) loop_condition = False
循環(huán)條件為真就執(zhí)行循環(huán)直到循環(huán)條件置為假為止。
for循環(huán):在塊內(nèi)你可以使用“num”,而且“for”語(yǔ)句也會(huì)執(zhí)行循環(huán)。這段代碼與while代碼(從1到10)的輸出是一樣的。
fori inrange(1, 11):
print(i)
理解?很簡(jiǎn)單。從1開始進(jìn)行直到11,10是第十個(gè)元素。
列表:包|數(shù)組|數(shù)據(jù)結(jié)構(gòu)
假如你想將整數(shù)1用一個(gè)變量存儲(chǔ),但是現(xiàn)在你或許還想存2、3、4、5以及更多。
我有其它方法來(lái)存儲(chǔ)我想存的所有整數(shù)而不是百萬(wàn)個(gè)變量嗎?你猜到了——事實(shí)上有另一種存儲(chǔ)方法。
列表
是可以用來(lái)存儲(chǔ)一系列值(就像你想存的這些整數(shù))的集合。那么一起來(lái)用一下吧:
my_integers = [1, 2, 3, 4, 5]
真的很簡(jiǎn)單。我們構(gòu)造一個(gè)數(shù)組,并將它存在my_integer。
但是或許你會(huì)問(wèn):“我怎樣得到這個(gè)數(shù)組中的值?”問(wèn)的好!
列表中有一個(gè)索引的概念。第一個(gè)元素的索引為0.第二個(gè)為1,以此類推,你就明白了。
為了更清楚地表示,我們可以用索引來(lái)表示數(shù)組和每個(gè)元素。我可以畫一下:
對(duì)于Python語(yǔ)言的使用也很容易理解:
my_integers = [5, 7, 1, 3, 4]print(my_integers[0]) # 5
print(my_integers[1]) # 7
print(my_integers[4]) # 4
假如你不想存儲(chǔ)整數(shù),你想存儲(chǔ)字符串,像你的親人名字的集合。我的看起來(lái)是這樣的:
relatives_names = [
"Toshiaki",
"Juliana",
"Yuji",
"Bruno",
"Kaio"
]print(relatives_names[4]) # Kaio
它和整型的操作方式一樣。真棒!
我們只是學(xué)習(xí)索引如何有效使用,但是我仍然需要告訴你我們?nèi)绾螌⒁粋€(gè)元素加入數(shù)據(jù)結(jié)構(gòu)(向列表中加入一項(xiàng))。
向列表中增加一個(gè)新值最常見的方法就是append,讓我們一起來(lái)看看它是如何進(jìn)行的:
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超級(jí)簡(jiǎn)單。你只需要將這個(gè)元素當(dāng)作參數(shù)使用就行(有效的工程師)。這部分足夠了。讓我們談?wù)撓乱环N數(shù)據(jù)結(jié)構(gòu)吧。
字典:鍵值數(shù)據(jù)結(jié)構(gòu)
現(xiàn)在我們都知道,列表以整數(shù)作為索引,但是我們不想用整數(shù)作為索引怎么辦?我們可以使用的數(shù)據(jù)結(jié)構(gòu)有數(shù)值型、字符串型或者是其它索引類型。
讓我們一起來(lái)了解一下字典這種數(shù)據(jù)結(jié)構(gòu)吧。
dictionary_example = {
"key1": "value1",
"key2": "value2",
"key3": "value3"}
字典是鍵值對(duì)的集合,值的索引指向鍵。我們?nèi)绾潍@取字典中的值呢?你猜對(duì)了——使用鍵。讓我們一起來(lái)試一下:
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
我構(gòu)造了一個(gè)有關(guān)于我的字典,包括我的姓名、昵稱和國(guó)籍。這些屬性都是字典的鍵。正如我們學(xué)過(guò)的如何使用索引來(lái)獲取列表一樣,我們也使用索引來(lái)得到存儲(chǔ)在字典中的值。比如,我輸出一句有關(guān)我的語(yǔ)句,而它會(huì)用到所有存儲(chǔ)在字典中的屬性。非常簡(jiǎn)單,對(duì)嗎?還有一件很贊的事,我們可以把任何東西當(dāng)作值來(lái)使用。在我所構(gòu)造的字典中,我想增加一個(gè)鍵“年齡”,而且我的真正的整數(shù)年齡也在里面:
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
這里,我們有一組鍵(年齡)值(24)對(duì),其中鍵為字符串型,值為整型。和我們用列表做的一樣,讓我們學(xué)一下如何向字典中增加元素吧。字典中很大一部分都是鍵指向值。當(dāng)我們談?wù)撓蜃值渲性黾釉氐臅r(shí)候,
dictionary_tk = {
"name": "Leandro",
"nickname": "Tk",
"nationality": "Brazilian"
}dictionary_tk['age'] = 24
print(dictionary_tk) # {'nationality': 'Brazilian', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}
我們只需要給字典中的鍵賦一個(gè)值。這里沒(méi)有什么是復(fù)雜的,對(duì)嗎?
循環(huán):通過(guò)數(shù)據(jù)結(jié)構(gòu)進(jìn)行循環(huán)
正如我們?cè)赑ython基礎(chǔ)部分學(xué)習(xí)的那樣,列表循環(huán)很簡(jiǎn)單。Python開發(fā)者一般都是用for循環(huán)。讓我們做一下吧:
bookshelf = [
"The Effective Engineer",
"The 4 hours work week",
"Zero to One",
"Lean Startup",
"Hooked"
]
forbook inbookshelf:
print(book)
對(duì)于書架上的每本書,我們(可以用它做任何事)將它打印出來(lái)。非常簡(jiǎn)單直觀,這就是Python。
對(duì)于一個(gè)哈希數(shù)據(jù)結(jié)構(gòu),我們同樣可以使用for循環(huán),但是我們要運(yùn)用鍵。
dictionary = { "some_key": "some_value"}
forkeyin dictionary:
print("%s --> %s"%(key, dictionary[key])) # some_key --> some_value
這是一個(gè)如何使用的例子。對(duì)于字典中的每個(gè)鍵,我們都會(huì)輸出鍵和與之對(duì)應(yīng)的值。另一種方法是用iteritems方法。我們的確命名兩個(gè)參數(shù)key和value,但是這不是很必要。我們可以對(duì)它們進(jìn)行任意命名。讓我們一起來(lái)看一下:
dictionary_tk = {
"name": "Leandro",
"nickname": "Tk",
"nationality": "Brazilian",
"age": 24
}
forattribute, value in dictionary_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
我們可以把我們使用的屬性看作是字典key的一個(gè)參數(shù),而且它可以正常運(yùn)行。好極了!
類和對(duì)象
一點(diǎn)點(diǎn)理論
對(duì)象表示真實(shí)世界中的實(shí)體,像汽車、小狗或自行車。對(duì)象共享兩個(gè)主要特性:數(shù)據(jù)和行為。
汽車有數(shù)據(jù),比如車輪數(shù)、車門數(shù)以及座位容量。它們也有可顯示的行為:加速、停車、顯示剩余燃料以及其它事情。
在面向?qū)ο筮^(guò)程中,我們把數(shù)據(jù)當(dāng)作屬性,把行為當(dāng)作方法。再來(lái)一次,數(shù)據(jù)——>屬性,行為——>方法。而且從所構(gòu)造的個(gè)體對(duì)象來(lái)看,類是模型。在現(xiàn)實(shí)生活中,我們經(jīng)常會(huì)發(fā)現(xiàn)許多相同類型的實(shí)體,比如汽車。模型和形狀都是一樣的(而且都有發(fā)動(dòng)機(jī)、車輪、車門等等)每輛車都用相同的模型和組件。
Python的面向?qū)ο蟮木幊棠J?#xff1a;ON
Python作為一種面向?qū)ο蟮木幊陶Z(yǔ)言,有類和對(duì)象的概念。類是對(duì)象的模型。類只是一個(gè)模型,或者說(shuō)是一種定義屬性和行為的方法(正如我們?cè)诶碚摬糠炙劦降哪菢?#xff09;。舉個(gè)例子,一個(gè)車輛類有自己的屬性,用于定義那些對(duì)象是車輛。車輪數(shù)、油箱類型、座位數(shù)和最快速度都是一輛車的屬性。帶著這些,讓我們一起來(lái)看看Python中類的語(yǔ)法:
classVehicle:
pass
我們通過(guò)類聲明來(lái)定義類——就是這樣,很簡(jiǎn)單吧!對(duì)象是類的一個(gè)實(shí)例。我們通過(guò)命名類來(lái)構(gòu)造一個(gè)實(shí)例。
car = Vehicle()
print(car) # <__main__.Vehicleinstanceat 0x7fb1de6c2638>
這里的car就是一個(gè)類Vehicle的一個(gè)對(duì)象(或?qū)嵗?#xff09;。記得我們的車輛類有四個(gè)屬性:車輪數(shù)、油箱類型、座位數(shù)和最快速度。當(dāng)我們構(gòu)造一個(gè)車輛對(duì)象時(shí)就需要設(shè)置這些屬性。因此這里,我們需要定義我們的類,當(dāng)它初始化的時(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
我們會(huì)用到init方法。我們稱它為構(gòu)造方法。因此當(dāng)我們構(gòu)造一個(gè)車輛實(shí)體時(shí),我們可以定義這些屬性。假設(shè)我們都喜歡特斯拉模型S,我們想要構(gòu)造一個(gè)這種類型的對(duì)象。它是電動(dòng)的,有四個(gè)車輪和五個(gè)座位,而且最快速度為250千米/小時(shí)(155英里/小時(shí))。讓我們創(chuàng)建一個(gè)這種對(duì)象:
tesla_model_s= Vehicle(4, 'electric', 5, 250)
對(duì)所有屬性進(jìn)行設(shè)置:四個(gè)輪子+電動(dòng)“油箱類型”+五個(gè)座位+最快速度為250千米/小時(shí)。但是我們?nèi)绾潍@取這些屬性的值呢?我們向該對(duì)象發(fā)送了一條查詢屬性值的信息,我們稱之為方法,它是對(duì)象的行為。讓我們一起來(lái)實(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
包括兩種方法的實(shí)現(xiàn):車輪數(shù)和車輪數(shù)的設(shè)置。我們稱為getter和setter,因?yàn)榍罢攉@得屬性值,而后者獲得該屬性的一個(gè)新值。
在Python中,我們可以這樣做:用@property(decorators)來(lái)定義getter和setter。來(lái)看一下代碼:
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
此外,我們可以把這些方法當(dāng)作屬性來(lái)使用:
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
這里有點(diǎn)不同于定義方法,方法和屬性的作用一樣。比如,當(dāng)我們?cè)O(shè)置新的車輪數(shù)時(shí),我們不會(huì)把2作為參數(shù),而是把number_of_wheels的值設(shè)為2。這是一種getter和setter方法的代碼形式。但是對(duì)于其他的我們也可以用一些方法,比如“制造噪音”方法。讓我們一起來(lái)看一下:
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)用這種方法時(shí),它就會(huì)返回一串“VRRRRUUUUM”。
tesla_model_s = Vehicle(4, 'electric', 5, 250)tesla_model_s.make_noise() # VRUUUUUUUM
封裝:隱藏信息
封裝機(jī)制不允許直接獲取對(duì)象的數(shù)據(jù)和方法,但與此同時(shí),它提供了對(duì)數(shù)據(jù)和方法的操作。
“封裝可以用來(lái)隱藏?cái)?shù)據(jù)成員和功能成員,在此定義下,封裝意味著一個(gè)對(duì)象的內(nèi)部表示通常對(duì)該對(duì)象以外是隱藏的”。——維基百科
“封裝可以用來(lái)隱藏?cái)?shù)據(jù)成員和功能成員,在此定義下,封裝意味著一個(gè)對(duì)象的內(nèi)部表示通常對(duì)該對(duì)象以外是隱藏的”。——維基百科
一個(gè)對(duì)象的內(nèi)部表示對(duì)外界是隱藏的,只有該對(duì)象可以聯(lián)系到其內(nèi)部數(shù)據(jù)。首先我們需要理解公有和非公有實(shí)例變量和方法如何運(yùn)行。
公有實(shí)例變量
對(duì)于一個(gè)Python類,我們用結(jié)構(gòu)化方法初始化一個(gè)公有實(shí)例變量,讓我們一起來(lái)看一下:
classPerson:def__init__(self, first_name):
self.first_name = first_name
在結(jié)構(gòu)體方法中,我們用first_name的值作為對(duì)公有實(shí)例變量的聲明。
tk = Person('TK')print(tk.first_name) # => TK
在類中,我們不需要將first_name作為聲明,而且實(shí)例對(duì)象會(huì)有一個(gè)類屬性,并用初始化為TK。
tk = Person()print(tk.first_name) # => TK
很棒!現(xiàn)在我們知道我們可以使用公有實(shí)例變量和類屬性。另一件有關(guān)于公有部分的有趣的事情是我們可以管理變量的值。那意味著什么?對(duì)象可以管理和設(shè)置其變量的值。
要記得Person類,我們想給它的first_name設(shè)置另一個(gè)值:
tk = Person('TK')tk.first_name = 'Kaio'
print(tk.first_name) # => Kaio
開始了,我們只是把kaio賦給first_name這個(gè)實(shí)例變量,而且對(duì)其值進(jìn)行了更新。很簡(jiǎn)單,因?yàn)樗枪凶兞?#xff0c;所以我們可以這樣做。
非公有實(shí)例變量
這里我們不用“私有”這一術(shù)語(yǔ),因?yàn)樵赑ython中不存在真正的私有屬性(一般沒(méi)有不必要的工作量)。——PEP 8
這里我們不用“私有”這一術(shù)語(yǔ),因?yàn)樵赑ython中不存在真正的私有屬性(一般沒(méi)有不必要的工作量)。——PEP 8
正如public instance variable一樣,我們可以用構(gòu)造方法或在類內(nèi)定義non-public instance variable。語(yǔ)法上的不同有:non-public instance variables在變量名前使用下劃線。
“在Python中不存在這樣的情況:在對(duì)象內(nèi)部以外無(wú)法獲取‘private’實(shí)例變量,然而在Python代碼中一貫遵循的一個(gè)習(xí)慣是:變量名前要加下劃線前綴(比如:_spam),名字一般作為API的非公有部分(無(wú)論它是函數(shù)、方法還是數(shù)據(jù)成員)”——Python Software Foundation
有這樣一個(gè)例子:
classPerson:def__init__(self, first_name, email):
self.first_name = first_name
self._email = email
你看到email變量了嗎?它顯示了我們?nèi)绾味xnon-public variable:
tk= Person('TK', 'tk@mail.com')print(tk._email) # tk@mail.com
我們可以獲得并更新它。Non-public variables僅僅是種習(xí)慣,而且應(yīng)該被當(dāng)作API的非公有部分。因此我們用一種方法,它允許我們?cè)陬悆?nèi)對(duì)其進(jìn)行定義。一起來(lái)實(shí)現(xiàn)以下兩個(gè)方法:email和update_email,有助于進(jìn)一步理解:
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)在我們使用方法可以更新和獲取non-public variables。讓我們一起來(lái)看一下:
tk = Person('TK', 'tk@mail.com')
print(tk.email()) # => tk@mail.comtk._email = 'new_tk@mail.com'
print(tk.email()) # => tk@mail.comtk.update_email('new_tk@mail.com')
print(tk.email()) # => new_tk@mail.com
1.我們用TK和tk@mail.com對(duì)一個(gè)新對(duì)象的first_name和email進(jìn)行初始化。
2.使用方法獲得non-public variable,然后輸出email。
3.試著在我們的類外設(shè)置一個(gè)新的email。
4.我們需要將non-public variable作為API的non-public部分。
5.用我們的實(shí)例方法更新non-public variable。
6.成功了!我們借助幫助方法可以在類內(nèi)對(duì)其進(jìn)行更新。
公有方法
我們可以在類外使用公有方法
classPerson:def__init__(self, first_name, age):
self.first_name = first_name
self._age = age
defshow_age(self):
returnself._age
讓我們一起來(lái)測(cè)試一下:
tk = Person('TK', 25)print(tk.show_age()) # => 25
棒極了——沒(méi)有任何問(wèn)題!
非公有方法
對(duì)于非公有方法,我們不能那樣做。一起來(lái)實(shí)現(xiàn)一個(gè)同樣的Person類,但是現(xiàn)在我們會(huì)用下劃線表示non-public method,即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)在會(huì)通過(guò)對(duì)象來(lái)調(diào)用這個(gè)方法:
tk = Person('TK', 25)print(tk._show_age()) # => 25
我們可以獲得它并對(duì)其進(jìn)行更新。Non-public methods僅僅只是個(gè)習(xí)慣,而且應(yīng)該當(dāng)作API的非公有部分。這里有個(gè)例子是有關(guān)于對(duì)它的使用:
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._agetk = Person('TK', 25)print(tk.show_age()) # => 25
這里我們有一個(gè)public method為show_age,我們的對(duì)象(在類外)可以使用它,而_get_age只能在類定義部分使用(在show_age方法中)。再次提醒:這只是習(xí)慣問(wèn)題。
封裝總結(jié)
有了封裝,我們可以確保對(duì)象的內(nèi)部表示對(duì)外是隱藏的。
繼承:行為和特性
某些對(duì)象有共同點(diǎn):行為和特性
舉個(gè)例子,我繼承了我父親的一些行為和特性。我繼承了他的眼睛和頭發(fā)作為特性,他的不耐心和內(nèi)向作為行為。
在面向?qū)ο缶幊讨?#xff0c;類可以繼承另一個(gè)類的共同特性(數(shù)據(jù))和行為(方法)。
讓我們一起來(lái)看另一個(gè)例子,并用Python對(duì)其進(jìn)行實(shí)現(xiàn)。
假定有一輛汽車,它的屬性有:車輪數(shù)、座位數(shù)和最快速度。我們可以說(shuō)電動(dòng)車類繼承普通車類的這些相同屬性。
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
已經(jīng)實(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)
一旦對(duì)其進(jìn)行初始化,我們就可以使用所構(gòu)造的所有instance variables。非常棒!在Python中,我們可以將parent class作為child class的一個(gè)參數(shù)。一個(gè)電動(dòng)車類可以繼承我們的汽車類。
classElectricCar(Car):def__init__(self, number_of_wheels, seating_capacity, maximum_velocity): Car.__init__(self, number_of_wheels, seating_capacity, maximum_velocity)
就是這么簡(jiǎn)單。我們不需要實(shí)現(xiàn)其它任何方法,因?yàn)檫@個(gè)類已經(jīng)有了這些方法(繼承了汽車類)。讓我們來(lái)證明一下:
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ǔ),我們已經(jīng)學(xué)了很多:
Python的變量如何工作
Python條件聲明如何實(shí)現(xiàn)
Python循環(huán)如何實(shí)現(xiàn)
如何使用List:Collection|Array
字典鍵值對(duì)集合
如何利用這些數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)循環(huán)
對(duì)象和類
屬性作為對(duì)象的數(shù)據(jù)
方法作為對(duì)象的行為
使用Python的getters和setters和property裝飾器
封裝:隱藏信息
繼承:行為和特性
祝賀你!你已經(jīng)完成了有關(guān)Python的難理解的部分。
如果你想學(xué)習(xí)完整的Python課程,學(xué)習(xí)更多的編程技巧和項(xiàng)目搭建,建議試一下One Month Python Bootcamp部分
有關(guān)我的日志學(xué)習(xí)和編程掌握的更多故事和帖子,可以關(guān)注我所發(fā)布的The Renaissance Developer。
玩的開心,繼續(xù)學(xué)習(xí)并保持編程!
我的Instagram,Twitter,GithubLinkdle。
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?
戳鏈接:
http://www.gair.link/page/TextTranslation/830
AI研習(xí)社每日更新精彩內(nèi)容,點(diǎn)擊文末【閱讀原文】即可觀看更多精彩內(nèi)容:
良心推薦:一份 20 周學(xué)習(xí)計(jì)算機(jī)科學(xué)的經(jīng)驗(yàn)貼(附資源)
多目標(biāo)追蹤器:用OpenCV實(shí)現(xiàn)多目標(biāo)追蹤(C++/Python)
為計(jì)算機(jī)視覺(jué)生成大的、合成的、帶標(biāo)注的、逼真的數(shù)據(jù)集
悼念保羅·艾倫,除了他科技圈還有哪些大佬值得信仰?
等你來(lái)譯:
自動(dòng)文本提取
用 4 種卷積神經(jīng)網(wǎng)絡(luò),輕松分類時(shí)尚圖像
使用 SKIL 和 YOLO 構(gòu)建產(chǎn)品級(jí)目標(biāo)檢測(cè)系統(tǒng)
很有啟發(fā)性的25個(gè)開源機(jī)器學(xué)習(xí)項(xiàng)目
號(hào)外號(hào)外~
想要獲取更多AI領(lǐng)域相關(guān)學(xué)習(xí)資源,可以訪問(wèn)AI研習(xí)社資源板塊下載,
所有資源目前一律限時(shí)免費(fèi),歡迎大家前往社區(qū)資源中心
(http://www.gair.link/page/resources)下載喔~
總結(jié)
以上是生活随笔為你收集整理的python手把手入门_新手必看:手把手教你入门 Python的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python3.9特性_Python3.
- 下一篇: python爬虫多url_Python爬