零基礎(chǔ)到精通Python恍箭,從這篇文章開始

? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????? 源|?medium.com譯|?OSC

什么是 Python ? Python 之父 Guido van Rossum?說:Python是一種高級程序語言瞧省,其核心設(shè)計哲學(xué)是代碼可讀性和語法扯夭,能夠讓程序員用很少的代碼來表達自己的想法。對于我來說鞍匾,學(xué)習(xí) Python 的首要原因是交洗,Python 是一種可以優(yōu)雅編程的語言。它能夠簡單自然地寫出代碼和實現(xiàn)我的想法橡淑。另一個原因是我們可以將 Python 用在很多地方:人工智能构拳、數(shù)據(jù)科學(xué)、Web 開發(fā)和機器學(xué)習(xí)等都可以使用 Python 來開發(fā)梁棠。Quora置森、Pinterest 和 Spotify 都使用 Python 來進行他們的后端 Web 開發(fā)。那么讓我們來學(xué)習(xí)一下 Python 吧符糊。

Python 基礎(chǔ)

1.變量

你可以把變量想象成一個用來存儲值的單詞凫海。我們看個例子。

Python 中定義一個變量并為它賦值是很容易的男娄。假如你想存儲數(shù)字 1 到變量 “one” 行贪,讓我們試試看:

one=1

超級簡單吧?你只需要把值 1 分配給變量 “one” 模闲。

two=2

some_number=10000

只要你想建瘫,你可以把任意的??賦給任何其他的?變量?。正如你從上面看到的那樣尸折,變量 “?two?” 存儲整型變量??2 啰脚,?變量 “?some_number?” 存儲 10000 。

除了整型翁授,我們還可以使用布爾值(True/Flase)拣播、字符串、浮點型和其他數(shù)據(jù)類型收擦。

# booleans

true_boolean=True

false_boolean=False

# string

my_name="Leandro Tk"

# float

book_price=15.80

2.控制流程:條件語句

If” 使用一個表達式來判斷一個語句是 True 還是 False ,如果是 True 谍倦,那么執(zhí)行 if 內(nèi)的代碼塞赂,例子如下:

ifTrue:

print("Hello Python If")

if2>1:

print("2 is greater than 1")

21?大,所以print?代碼被執(zhí)行昼蛀。

當(dāng)“if”里面的表達式是false?時宴猾,“else” 語句將會執(zhí)行圆存。

if1>2:

print("1 is greater than 2")

else:

print("1 is not greater than 2")

1?比??2??小,所以 “?else?” 里面的代碼會執(zhí)行仇哆。

你也可以使用 “elif” 語句:

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?for讹剔。While?循環(huán):當(dāng)語句是 True 時油讯,while 內(nèi)部的代碼塊會執(zhí)行。所以下面這段代碼會打印出??1?到??10 延欠。

num =1

whilenum <=10:

print(num)

num +=1

while循環(huán)需要循環(huán)條件陌兑,如果條件一直是 True ,它將會一直迭代由捎,當(dāng) num 的值為 11 時兔综,循環(huán)條件為 false 。另一段代碼可以幫你更好的理解 while 語句的用法:

loop_condition =True

whileloop_condition:

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

loop_condition =False

循環(huán)條件是 True 所以會一直迭代狞玛,直到為 False 软驰。For 循環(huán):你可以在代碼塊上應(yīng)用變量 “?num?” ,而 “for” 語句將為你迭代它心肪。此代碼將打印與??while??中相同的代碼:從 1 到 10 锭亏。

fori inrange(1,11):

print(i)

瞧見沒?這太簡單了蒙畴。i 的范圍從 1 開始一直到第 11 個元素(10是第十個元素)

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

假如你想要在一個變量里存儲整數(shù) 1 贰镣,但是你也要存儲 2 和 3 , 4 , 5 ……不是用成百上千個變量,我有別的方法存儲這些我想要存儲的整數(shù)嗎膳凝?你已經(jīng)猜到了碑隆,確實有別的存儲它們的方法。列表是一個集合蹬音,它能夠存儲一列值(就像你想要存儲的這些)上煤,那么讓我們來用一下它:

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

這真的很簡單。我們創(chuàng)建了一個叫做 my_integer 的數(shù)組并且把數(shù)據(jù)存到了里面著淆,也許你會問:“我要怎樣獲取數(shù)組里的值劫狠?”問的好。列表有一個叫做索引的概念永部。第一個元素的下表是索引0(0)独泞。第二個的索引是1,以此類推苔埋,你應(yīng)該明白的懦砂,為了使它更加簡潔,我們可以用它的索引代表數(shù)組元素。我畫了出來:

用?Python 的語法荞膘,也很好去理解:

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

print(my_integers[0])# 5

print(my_integers[1])# 7

print(my_integers[4])# 4

假如你不想存整數(shù)罚随。你只想去存一些字符串,像你親戚名字的列表羽资。我的看起來是類似這樣的:

relatives_names = [

"Toshiaki",

"Juliana",

"Yuji",

"Bruno",

"Kaio"

]

print(relatives_names[4])# Kaio

它的原理跟存整數(shù)一樣淘菩,很友好。我們只學(xué)習(xí)了列表的索引是如何工作的屠升,我還需要告訴你如何向列表的數(shù)據(jù)結(jié)構(gòu)中添加一個元素(向列表中添加一個項目)潮改。最常用的向列表中添加新數(shù)據(jù)的方法是拼接。我們來看一下它是如何使用的:

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

拼接超級簡單弥激,你僅需要把一個元素(比如“有效的機器”)作為拼接參數(shù)进陡。好了,關(guān)于列表的知識這些就夠了微服,讓我們來看一下其它的數(shù)據(jù)結(jié)構(gòu)趾疚。

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

現(xiàn)在我們知道 List 是有索引的整型數(shù)字集合。但如果我們不像使用整型數(shù)字作為索引呢以蕴?我們可以用其他的一些數(shù)據(jù)結(jié)構(gòu)糙麦,比如數(shù)字、字符串或者其他類型的索引丛肮。讓我們學(xué)習(xí)下字典這種數(shù)據(jù)結(jié)構(gòu)赡磅。字典是一個鍵值對的集合。字典差不多長這樣:

dictionary_example = {

"key1":"value1",

"key2":"value2",

"key3":"value3"

}

Key是指向value?的索引宝与。我們?nèi)绾卧L問字典中的value?呢焚廊?你應(yīng)該猜到了,那就是使用key 习劫。我們試一下:

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

我們有個key(age)value(24)咆瘟,使用字符串作為key?整型作為value?。我創(chuàng)建了一個關(guān)于我的字典诽里,其中包含我的名字袒餐、昵稱和國籍。這些屬性是字典中的?key 谤狡。就像我們學(xué)過的使用索引訪問 list 一樣灸眼,我們同樣使用索引(在字典中 key 就是索引)來訪問存儲在字典中的?value??。正如我們使用 list 那樣墓懂,讓我們學(xué)習(xí)下如何向字典中添加元素焰宣。字典中主要是指向 value 的 key 。當(dāng)我們添加元素的時候同樣如此:

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

我們只需要將一個字典中的一個key指向一個value?捕仔。沒什么難的宛徊,對吧佛嬉?

迭代:通過數(shù)據(jù)結(jié)構(gòu)進行循環(huán)

跟我們在 Python 基礎(chǔ)中學(xué)習(xí)的一樣逻澳,List 迭代十分簡單闸天。我們 Python 開發(fā)者通常使用 For 循環(huán)。我們試試看:

bookshelf = [

"The Effective Engineer",

"The 4 hours work week",

"Zero to One",

"Lean Startup",

"Hooked"

]

forbookinbookshelf:

print(book)

對于在書架上的每本書斜做,我們打影(?可以做任何操作?)到控制臺上。超級簡單和直觀吧瓤逼。這就是 Python 的美妙之處笼吟。

對于哈希數(shù)據(jù)結(jié)構(gòu),我們同樣可以使用 for 循環(huán)霸旗,不過我們需要使用 key 來進行:

dictionary = {"some_key":"some_value"}

forkeyindictionary:

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

# some_key --> some_value

上面是如何在字典中使用 For 循環(huán)的例子贷帮。對于字典中的每個 key ,我們打印出 key 和 key 所對應(yīng)的 value 诱告。

另一種方式是使用 iteritems 方法撵枢。

dictionary = {"some_key":"some_value"}

forkey,valueindictionary.items():

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

# some_key --> some_value

我們命名兩個參數(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

可以看到我們使用了 attribute 作為字典中 key 的參數(shù),這與使用 key 命名具有同樣的效果靴姿。真是太棒了沃但!

類&對象

一些理論:

對象是對現(xiàn)實世界實體的表示,如汽車佛吓、狗或自行車宵晚。 這些對象有兩個共同的主要特征:數(shù)據(jù)行為。汽車有數(shù)據(jù)维雇,如車輪的數(shù)量淤刃,車門的數(shù)量和座位的空間,并且它們可以表現(xiàn)出其行為:它們可以加速谆沃,停止钝凶,顯示剩余多少燃料,以及許多其他的事情唁影。我們將?數(shù)據(jù)?看作是面向?qū)ο缶幊讨械膶傩院托袨椤?又表示為:數(shù)據(jù)→ 屬性和行為 → 方法而??是創(chuàng)建單個對象的藍圖耕陷。 在現(xiàn)實世界中,我們經(jīng)常發(fā)現(xiàn)許多相同類型的對象据沈。 比如說汽車哟沫。 所有的汽車都有相同的構(gòu)造和模型(都有一個引擎,輪子锌介,門等)嗜诀。每輛車都是由同一套藍圖構(gòu)造成的猾警,并具有相同的組件。

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

Python隆敢,作為一種面向?qū)ο缶幊陶Z言发皿,存在這樣的概念:對象。一個類是一個藍圖拂蝎,是對象的模型穴墅。那么,一個類是一個模型温自,或者是一種定義?屬性?和?行為?的方法(正如我們在理論部分討論的那樣)玄货。

舉例來說,一個車輛??有它自己的?屬性?來定義這個?對象?是個什么樣的車輛悼泌。一輛車的屬性有輪子數(shù)量松捉,能源類型,座位容量和最大時速這些馆里“溃考慮到這一點,讓我們來看看 Python 的??的語法:

classVehicle:

pass

上邊的代碼也拜,我們使用?class 語句?來定義一個類以舒。是不是很容易?

對象是一個的實例化慢哈,我們可以通過類名來進行實例化蔓钟。

car = Vehicle()

print(car) # <__main__.Vehicle instance at0x7fb1de6c2638>

在這里,car 是類 Vehicle 的對象(或者實例化)卵贱。

記得車輛有四個屬性:輪子的數(shù)量滥沫,油箱類型,座位容量和最大時速键俱。當(dāng)我們新建一個車輛對象時要設(shè)置所有的屬性兰绣。所以在這里,我們定義一個在它初始化的時候接受參數(shù):

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)造函數(shù)缀辩。因此當(dāng)我們在創(chuàng)建一個車輛?對象?時,可以定義這些?屬性?踪央。想象一下臀玄,我們喜歡 Tesla Model S ,所以我們想創(chuàng)建一個這種類型的?對象畅蹂。?它有四個輪子健无,使用電能源,五座并且最大時時速是250千米(155英里)液斜。我們開始創(chuàng)建這樣一個?對象?:

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

四輪+電能源+五座+最大時速250千米累贤。

所有的屬性已經(jīng)設(shè)置了叠穆。但我們該如何訪問這些屬性值呢?我們給對象發(fā)送消息以向其請求該值臼膏。我們稱之為方法硼被。它是對象的行為。讓我們實現(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

這是兩個方法number_of_wheels和set_number_of_wheels的實現(xiàn)讶请。我們將其稱為getter?&?setter祷嘶。因為第一個函數(shù)是獲取屬性值,第二個函數(shù)是給屬性設(shè)置新的值夺溢。

在Python中,我們可以使用@property?(修飾符)來定義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

這和方法定義有輕微的不同风响。這里的方法是按照屬性執(zhí)行的。例如當(dāng)我們設(shè)置新的輪胎數(shù)目時丹禀,我們并不將這兩個看做參數(shù)状勤,而是將數(shù)值2設(shè)置給nuber_of_wheels。這是編寫python風(fēng)格的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ù)和方法的機制葫盼。但與此同時,它使得在數(shù)據(jù)上操作更簡單(對象的方法)村斟。

“封裝可被用于隱藏數(shù)據(jù)成員和成員函數(shù)贫导。按照這個定義,封裝意味著?對象的內(nèi)部表示一般在對象定義的外部視圖中隱藏蟆盹『⒌疲”?—?Wikipedia

對象的所有內(nèi)部表示都對外部隱藏了。只有對象本身可以與其內(nèi)部數(shù)據(jù)交互逾滥。

首先峰档,我們需要理解公開的、非公開的實例變量和方法的工作原理寨昙。

公共實例變量

對于 Python 類讥巡,我們可以在我們的構(gòu)造函數(shù)方法中初始化一個公共實例變量。讓我們看看這個:在這個構(gòu)造方法中:

classPerson:

def__init__(self, first_name):

self.first_name = first_name

在這里毅待,我們將 first_name 值作為參數(shù)應(yīng)用于公共實例變量尚卫。

tk = Person('TK')

print(tk.first_name)# => TK

在類中:

classPerson:

first_name ='TK'

在這里,我們不需要將 first_name 作為參數(shù)尸红,所有的實例對象都有一個用 TK 初始化的類屬性吱涉。

tk = Person()

print(tk.first_name)# => TK

太酷了刹泄,現(xiàn)在我們已經(jīng)了解到,我們可以使用公共實例變量和類屬性怎爵。關(guān)于公共部分的另一個有趣的事情是我們可以管理變量值特石。我的意思是什么呢?我們的對象可以管理它的變量值:Get 和 Set 變量值鳖链。

還是在 Person 類中姆蘸,我們想為它的 first_name 變量設(shè)置另一個值:

tk = Person('TK')

tk.first_name ='Kaio'

print(tk.first_name)# => Kaio

這就可以了,我們只是為 first_name 實例變量設(shè)置另一個值(kaio)芙委,并更新了值逞敷。就這么簡單。因為這是一個公共變量灌侣,我們是可以這么做的推捐。

Non-public實例變量

這里我們并沒有使用術(shù)語“private”,因為在Python中所有屬性都不是真的私有的(沒有通常不必要的工作量)侧啼。?—??PEP?8

作為?public instance variable(公共實例變量)牛柒,我們可以在構(gòu)造方法或類內(nèi)部定義?non-public instance variable?(非公共實例變量)。語法上的區(qū)別是:于?non-public instance variables?(非公共實例變量)痊乾,在變量名前使用下劃線(_)皮壁。

“除了從對象內(nèi)部外無法被訪問的‘Private’實例變量在Python中并不存在。然而哪审,這里有一個多數(shù)Python代碼都會遵守的慣例:使用下劃線作為前綴的命名(例如 _spam)應(yīng)該被認(rèn)為是API的非公開部分(不管是函數(shù)蛾魄、方法還是數(shù)據(jù)成員)”?—??Python軟件基礎(chǔ)

這里是示例代碼:

class?Person:

def__init__(self, first_name, email):

self.first_name = first_name

self._email = email

你看到了email變量了嗎?這就是我們?nèi)绾味x非公共變量的方法:?

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

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

我們可以訪問并更新它协饲。非公共變量僅僅是一個慣用法畏腕,并且應(yīng)該被當(dāng)做API的非公共部分。

所以我們使用一個在類定義內(nèi)部的方法來實現(xiàn)該功能茉稠。讓我們實現(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初始化了一個新對象

使用方法訪問非公開變量email并輸出它

嘗試在類外部設(shè)置一個新的email

我們需要將非公開變量視為API的非公開部分

使用我們的實例方法來更新非公開變量

成功!我們使用輔助方法在類內(nèi)部更新了它。

公共方法

對于公共方法而线,我們也可以在類中使用它們:

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

很好 - 我們在類中使用它沒有任何問題铭污。

非公共方法

但是用非公開的方法,我們無法做到這一點膀篮。 如果我們想實現(xiàn)相同的 Person 類嘹狞,現(xiàn)在使用有下劃線(_)的 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)用這個非公共的方法:

我們可以訪問和更新它磅网。 非公共的方法只是一個慣例,應(yīng)該被視為API的非公開部分筷屡。

以下是我們?nèi)绾问褂盟囊粋€例子:

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 可以被我們的對象(不在我們的類中)使用簸喂,而 _get_age 只用在我們的類定義里面使用(在 show_age 方法里面)。 但是同樣的燎潮,這樣的做法通常是慣例喻鳄。

封裝小結(jié)

通過封裝烫止,我們可以確保對象的內(nèi)部表示是對外部隱藏的羽嫡。

繼承:行為和特征

某些物體有一些共同之處:它們的行為和特征个盆。例如递递,我繼承了我父親的一些特征和行為。我繼承了他的眼睛和頭發(fā)的特征姥闭,以及他的急躁和內(nèi)向的行為褐健。在面向?qū)ο缶幊讨懈籽惪梢岳^承另一個類的共同特征(數(shù)據(jù))和行為(方法)腥放。我們來看另一個例子泛啸,并用 Python 實現(xiàn)它。想象一下汽車秃症。車輪數(shù)量,座位容量和最大速度都是一輛車的屬性吕粹。我們可以說?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?類的實現(xiàn):

my_car = Car(4,5,250)

print(my_car.number_of_wheels)

print(my_car.seating_capacity)

print(my_car.maximum_velocity)

在 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)

就這么簡單。我們不需要實現(xiàn)任何其他方法稳其,因為這個類已經(jīng)完成了父類的繼承(繼承自 Car 類)驶赏。我們來證明一下:

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

干的漂亮。

總結(jié)

我們已經(jīng)學(xué)到了很多關(guān)于 Python 的基礎(chǔ)知識:

Python 變量是如何工作的

Python 條件語句是如何工作的

Python 循環(huán)( while 和 for )是如何工作的

如何使用鏈表:Collection |Array

字典式鍵值集合

我們?nèi)绾伪闅v這些數(shù)據(jù)結(jié)構(gòu)

對象和類

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

作為對象行為的方法

使用 Python getter/setter 以及屬性修飾器

封裝:隱藏信息

繼承:行為和特征

恭喜既鞠! 你完成了這個關(guān)于 Python 的密集的知識點煤傍。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嘱蛋,隨后出現(xiàn)的幾起案子蚯姆,更是在濱河造成了極大的恐慌,老刑警劉巖洒敏,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件龄恋,死亡現(xiàn)場離奇詭異,居然都是意外死亡凶伙,警方通過查閱死者的電腦和手機郭毕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來函荣,“玉大人显押,你說我怎么就攤上這事扳肛。” “怎么了煮落?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵敞峭,是天一觀的道長。 經(jīng)常有香客問我蝉仇,道長旋讹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任轿衔,我火速辦了婚禮沉迹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘害驹。我一直安慰自己鞭呕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布宛官。 她就那樣靜靜地躺著葫松,像睡著了一般。 火紅的嫁衣襯著肌膚如雪底洗。 梳的紋絲不亂的頭發(fā)上腋么,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音亥揖,去河邊找鬼珊擂。 笑死,一個胖子當(dāng)著我的面吹牛费变,可吹牛的內(nèi)容都是我干的摧扇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挚歧,長吁一口氣:“原來是場噩夢啊……” “哼扛稽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昼激,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤庇绽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后橙困,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞧掺,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年凡傅,在試婚紗的時候發(fā)現(xiàn)自己被綠了辟狈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哼转,靈堂內(nèi)的尸體忽然破棺而出明未,到底是詐尸還是另有隱情,我是刑警寧澤壹蔓,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布趟妥,位于F島的核電站,受9級特大地震影響佣蓉,放射性物質(zhì)發(fā)生泄漏披摄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一勇凭、第九天 我趴在偏房一處隱蔽的房頂上張望疚膊。 院中可真熱鬧,春花似錦虾标、人聲如沸寓盗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽傀蚌。三九已至,卻和暖如春蘸吓,著一層夾襖步出監(jiān)牢的瞬間喳张,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工美澳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摸航。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓制跟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酱虎。 傳聞我的和親對象是個殘疾皇子雨膨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

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