第三模組 第一章筆記 類例項化篇

2022-07-20 01:18:14 字數 2841 閱讀 4861

定義類與例項化

#定義父類 用於單位轉換

class scaleconverter:

def __init__(self,unit_from,unit_to,factor): #第乙個引數必須是self

self.unit_from=unit_from

self.unit_to=unit_to

self.factor=factor

def description(self): #函式必須傳入self,self用於區分是哪個物件呼叫該方法

return 'convert '+self.unit_from+' to '+self.unit_to

def convert(self,value):

return value*self.factor

c1=scaleconverter('inches','mm',25) #例項化類

print(c1.description())

print(str(c1.convert(2))+c1.unit_to)

屬性查詢與繫結方法

參考 部落格

1. 類繫結屬性

類繫結屬性可以直接在class中定義屬性,這種屬性是類屬。

class student(object):

name = 'student'

這個屬性雖然歸類所有,但類的所有例項都可以訪問到。

class student(object):

name = 'student'

s = student() # 建立例項s

print(s.name) # 列印name屬性,因為例項並沒有name屬性,所以會繼續查詢class的name屬性

print(student.name) # 列印類的name屬性

student

student

此時如果修改s.name的值,會有如下結果:

s.name = 'xiaoming' # 給例項繫結name屬性

print(s.name) # 由於例項屬性優先順序比類屬性高,因此,它會遮蔽掉類的name屬性

print(student.name) # 但是類屬性並未消失,用student.name仍然可以訪問

xiaoming

student

接下來刪除s.name屬性:

del s.name # 如果刪除例項的name屬性

print(s.name) # 再次呼叫s.name,由於例項的name屬性沒有找到,類的name屬性就顯示出來了

student

由此可見相同名稱的例項屬性將覆蓋類屬性,刪除例項屬性後,例項將向上訪問到類屬性。

2.例項繫結屬性

例項繫結屬性的方法有兩種,一是通過類的self變數,二是直接給例項賦值。

class student(object):

def __init__(self, name):

self.name = name

s = student('bob') #方法一 通過類的self變數繫結屬性

s.score = 90 #方法二 直接賦值

3.類繫結方法

類繫結方法分兩種,第一種形如類繫結屬性,例程如下:

class student(object):

pass

a = student()#建立例項

def set_score(self,score):

self.score = score

student.set_score=set_score#類繫結方法

a.set_score(99)#呼叫方法

print(a.score)

99#輸出

第二種是使用methodtype給類繫結方法:

class student(object):

pass

a=student()#建立例項

def set_score(self,score):

self.score=score

from types import methodtype

student.set_score = methodtype(set_score, student)

a.set_score(99)#呼叫方法

a.score

99#輸出

這種方法有乙個需要注意的地方,如果繼續建立乙個例項b:

b=student()

b.set_score(60)

b.score

a.score

6060

會發現a的屬性score值也變成60。這裡個人的理解是這裡的score並不是同上一種方法一樣直接繫結在類,而是類似於像列表一樣的共享

引用的關係,即例項a和b都引用這個score作為自己的屬性,而當其被修改時,所有引用它的例項的對應屬性都將一同發生變化。

4.例項繫結方法

第一種通過給類繫結方法,可以使例項呼叫,如上所示。

第二種是使用methodtype給單個例項繫結方法。

class student(object):

pass

a=student()#建立例項

def set_score(self,score):

self.score=score

from types import methodtype

a.set_score = methodtype(set_score, a)

a.set_score(99)#呼叫方法

a.score

99#輸出

注意這種方式只對例項a起作用,如果需要類studet的所有例項均可呼叫,那麼直接給類student繫結方法即可。

第一章例項

客戶端 include unp.h include include include bzero 標頭檔案 include include include define maxline 4096 define sa struct sockaddr int main int argc,char argv...

python第一章筆記 第一章 基礎

參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...

第一章 筆記

2.呼叫mat的size 方法,可以獲取該影象的尺寸。返回的是乙個結構體。mat image cout height 3.在原地進行的影象變換 mat image,result flip image,result,1 1 表示水平翻轉 2 表示垂直翻轉 負數表示既有水平也有垂直翻轉 imwrite ...