物件導向程式設計(一)建立類,例項化,屬性引用

2021-08-03 08:30:36 字數 1591 閱讀 9108

在python中,用變數表示特徵,用函式表示技能,因而類是變數與函式的結合體,物件是變數與方法(指向類的函式)的結合體。

class 類名:#定義乙個類

類體

類有兩種作用:屬性引用和例項化

t=類名()#例項化

類名加括號就是例項化,會自動觸發__init__函式的執行,可以用它來為每個例項定製自己的特徵

class 類名:

def __init__(self,x):#self的作用是在例項化時自動將物件/例項本身傳給__init__的第乙個引數,self可以是任意名字

self.x=x     #給__init__的第乙個引數,self可以是任意名字

t=類名(特徵)

資料呼叫

class 類名:

w=1def __init__(self,x):

self.x=x

def foo(self):

print('foo')

t=類名(引數)

t.w=1#呼叫變數

t.foo()#呼叫函式

物件/例項本身只有資料屬性,但是python的class機制會將類的函式繫結到物件上,稱為物件的方法,或者叫繫結方法,繫結方法唯一繫結乙個物件,同乙個類的方法繫結到不同的物件上,屬於不同的方法,記憶體位址都不會一樣。

物件的繫結方法的特別之處在於:obj.func()會把obj傳給func的第乙個引數。

==========================

建立乙個類就會建立乙個類的命名空間,用來儲存類中定義的所有名字,這些名字稱為類的屬性

而類有兩種屬性:資料屬性和函式屬性。其中類的資料屬性是共享給所有物件的,而類的函式屬性是繫結到所有物件的。

class star:

x=1def __init__(self,name):

self.name=name

def foo(self):

return 'foo from {} '.format(self.name)

tom=star('tom')

jack=star('jack')

print(tom.x,id(tom.x))#1 記憶體位址1763226688

print(jack.x,id(jack.x))#1 記憶體位址1763226688

print(tom.foo(),tom.foo) # foo from tom >

print(jack.foo(),jack.foo) #foo from jack >

建立乙個物件/例項就會建立乙個物件/例項的命名空間,存放物件/例項的名字,稱為物件/例項的屬性。

在obj.name會先從obj自己的命名空間裡找name,找不到則去類中找,類也找不到就找父類...最後都找不到就丟擲異常  

print(tom.__dict__)#

print(jack.__dict__)#

print(star.__dict__)#

python物件導向程式設計 類和例項化

物件導向程式設計有三大特徵 封裝,繼承,多型 封裝 讓 有了的完整性,把客觀的現實中存在的事物抽象成計算機中的物件 好處 將變化隔離 便於使用 提高復用性 提高安全性 繼承 物件導向的乙個重要特性是復用性.繼承是實現復用性的乙個重要手段.可以在不重複編寫以實現的功能的前提下,對功能進行復用和拓展.繼...

C 學習物件導向 例項化建立乙個類

目錄 c 學習物件導向 例項化建立乙個類 案例1 設計乙個圓類,求其周長 案例2 設計乙個學生類,屬性有姓名和學號,可以給姓名和學號賦值 includeusing namespace std const double pi 3.14 設計乙個圓類,求圓的周長 圓周長 2 pi r class設計乙個...

物件導向 類 類 例項初始化)

1 類的成員 public class testblock class myclass 結果為 這是非靜態 塊 無參構造 在每次建立物件時都執行 public class testblock class myclass public myclass string str 結果為 這是非靜態 塊 無參...