Python全棧開發實戰學習13

2021-09-11 11:20:26 字數 3527 閱讀 5023

class 類名:

屬性 = 『』

方法():

pass

現實中先有物件後有類:

物件1:李坦克

特徵:學校 = 『oldboy』

姓名 = 『李坦克』

性別 = 『男』

年齡 = 22

技能:吃飯

學習睡覺

物件2:王大陸

特徵:學校 = 『oldboy』

姓名 = 『王大陸』

性別 = 『男』

年齡 = 21

技能:吃飯

學習睡覺

物件3:牛深度

特徵:學校 = 『oldboy』

姓名 = 『牛深度』

性別 = 『男』

年齡 = 18

技能:吃飯

學習睡覺

現實中的老男孩學生類

相似的特徵:

學校 = 『oldboy'

相似的技能:

吃飯學習

睡覺

在程式中先有類後有物件:

class oldboy:

school = 'oldboy'

def learn(self):

print('is learning')

def eat(self):

print('is eating')

def sleep(self):

print('is sleeping')

注意:

類中可以有任意python**,這些**在類定義階段便會執行,因而產生新的命名空間,用來存放類的變數名與函式名,可以通過 『類名._dict_'檢視。

類中定義的名字,都是類的屬性,點是訪問屬性的語法

對於經典類來說,我們可以通過該字典操作類命名空間的名字,但新式類有限制(新式類與經典類以後會介紹)

oldboy.school     				# 查

oldboy.school = 'stanford' # 改

oldboy.name = 'martin' # 增

del oldboy.name # 刪

s1 = oldboy()

s2 = oldboy()

s3 = oldboy()

# 如此,s1,s2,s3三個都一樣了,而這三者除了相似的屬性外還有很多不同的屬性,這就用到了__init__

class oldboy:

school = 'oldboy'

def learn(self):

print('is learning')

def eat(self):

print('is eating')

def sleep(self):

print('is sleeping')

def __init__(self,name,***,age):

# ==注意:該方法是在物件產生之後才會執行,只用來為物件進行初始化操作,可以有任意**,但一定不能有返回值==

self.name = name

self.*** = ***

self.age = age

s1 = oldboy('李坦克','男',22) # 先產生s1,然後呼叫oldboy.__init__('李坦克','男',22)

s2 = oldboy('王大陸','男',21)

s3 = oldboy('牛深度','男',18)

類的屬性分為兩種,一種是資料屬性,另一種是函式屬性

1、資料屬性是所有物件共享的

print(id(oldboy.school)) 		# 140366641547224

print(id(s1.school)) # 140366641547224

print(id(s2.school)) # 140366641547224

print(id(s3.school)) # 140366641547224

2、函式資料是繫結給物件的,稱為繫結到物件的方法

print(oldboy.learn)    # print(s1.learn) 	# >

print(s2.learn) # >

print(s3.learn) # >

定義類並例項化出三個物件:

class

oldboy

: school =

'oldboy'

def__init__

(self,name,***,age)

: self.name = name

self.*** = ***

self.age = age

deflearn

(self)

:print

('%s is learning'

%(self.name)

)def

eat(self)

:print

('%s is eating'

%(self.name)

)def

sleep

(self)

:print

('%s is sleeping'

%(self.name)

)s1 = oldboy(

'李坦克'

,'男',22

)s2 = oldboy(

'王大陸'

,'男',21

)s3 = oldboy(

'牛深度'

,'男',18

)

類中定義的函式(沒有被任何裝飾器裝飾的)是類的函式屬性,類可以使用,但必須遵循函式的引數規則,有幾個引數就需要傳幾個引數

oldboy.learn(s1)

# 李坦克 is learning

oldboy.learn(s2)

# 王大陸 is learning

oldboy.learn(s3)

# 牛深度 is learning

類中定義的函式(沒有被任何裝飾器裝飾的),其實主要是給物件使用的,而且是繫結到物件的,雖然所有物件指向的都是相同的功能,但是繫結到不同的物件就是不同的繫結方法

強調:繫結到物件的方法的特殊之處在於,繫結給誰就由誰來呼叫,誰來呼叫,就會將「誰」本身當做第乙個引數傳給方法,即自動傳值

s1.learn(

)# 等同於oldboy.learn(s1)

s2.learn(

)# 等同於oldboy.learn(s2)

s3.learn(

)# 等同於oldboy.learn(s3)

注意:繫結到物件的方法的這種自動傳值的特徵,決定了在類中定義的函式都要預設寫乙個引數self,self可以是任意名字,但是約定俗成地寫出self

python中一切皆物件,且python3中類與型別是乙個概念,型別就是類。

Python全棧開發實戰學習6

把列表 0,1,2,3,4,5,6,7,8,9 中的每個元素加1 a i 1 for i in range 10 print a 結果 1 2,3 4,5 6,7 8,9 10 這樣的寫法就叫做列表生成式 列表是可迭代的,但不是迭代器 l 1 2,3 4,5 6 for i in l 生成了乙個迭代...

Python全棧開發實戰學習7

import module from module import xx from module.xx.xx import xx as rename from module.xx.xx import 編譯原始碼 python setup.py build 安裝原始碼 python setup.py i...

Python全棧開發實戰學習15

軟體重用的重要方式除了繼承之外還有另外一種方式,即組合 組合是指在乙個類中以另外乙個類的物件作為資料屬性,稱為類的組合 class equip 裝備類 deffire self print release fire skill class riven 英雄riven的類,乙個英雄需要有裝備,因而需要...