python類及物件

2021-08-10 21:54:05 字數 4598 閱讀 1628

#pass---程式塊為空使用

l=[1,2,3]

for i in range(len(l)):

pass

#一.類和物件---------------

#類:描述具有相同特徵的一類事物,是抽象的概念,不能執行具體的動作。 比如: 人類

#類組成:屬性和方法(動作)組成

#物件:是符合該類特性的實,也就是說是類的例項化,可以執行具體的動作。比如:學生

#1. 如何定義乙個類

#class 類名:

#類**塊(類體)

#屬性-----類的成員變數

#方法-----類的成員函式

class person:

pass

#2. 類的例項化 例項名=類名()

tom=person()

marry=person()

#3. 屬性------類的成員變數

class person:

classname='person'

def output(self):

print self.classname

p=person()

p.output()

#4.方法-------類的成員函式

#類的成員函式特點:

#(1)引數第乙個必須是self

#(2)類的成員函調用時不需要傳遞self,python直譯器在執行的之後會幫我們將例項名傳遞給引數self

#(3)呼叫成員函式用例項(物件)呼叫 (1) 例項名.函式名(引數)(2)類名.函式名(例項物件,引數1····)

#(4)全域性唯一--不會因為不同的例項呼叫而出現不同的方法

class person:

def init_person(self):

print('hello python!')

tom=person()

tom.init_person()

person.init_person(tom)

#多個引數的成員函式

#呼叫方法時要攜帶引數值

class person:

def init_person(self,name,age):

self.name=name

self.age=age

print'name:',self.name

print'age:',self.age

tom=person()

tom.init_person('tom',20)

person.init_person(tom,'tom',20)

#建構函式__init__:構造物件例項的時候主動呼叫的函式,執行類的初始化操作。

#如果建構函式中有引數,那麼在例項化物件的時候就要進行傳遞引數值

class person:

def __init__(self,name,age):

self.name=name

self.age=age

print'name:',self.name

print'age:',self.age

tom=person('tom',20)

#析構函式__del__:釋放物件占用資源(刪除物件)

class person:

def init_person(self,name,age):

self.name=name

self.age=age

print'name:',self.name

print'age:',self.age

def __del__(self):

print('delete obj tom!!')

tom=person()

tom.init_person('tom',20)

del tom

#5.例項的成員變數

#類的例項有乙個字典物件 存放 key(屬性名) :value(屬性值)

class person:

classname='person' #類的成員變數

def init_person(self,name,age):

#例項的成員變數self.name中的name是字典中的key,=後面的name是例項呼叫方法是傳遞進來的值value

self.name=name #例項的成員變數,將name 值用self.name的值來儲存------儲存

self.age=age #例項的成員變數

print self.name #利用例項物件來訪問成員變數--------訪問

p=person()

p.init_person('marry',19)

#二. 繼承----------------------------

#子類可以直接呼叫基類的方法------隱式呼叫(不顯示呼叫基類的名字)子類名.方法名(引數)

#子類顯示呼叫基類的方法-------顯示呼叫 基類名.方法(self,引數1,引數2....)

class person(object):

def init_person (self,name,age):

self.name=name

self.age=age

print 'name:'+self.name

print'age:',self.age

class man(person):

pass

m=man()

m.init_person('tom',23)

print '以下是顯示呼叫結果:'

person.init_person(m,'marry',20)

#如果子類呼叫的方法找不到可以到基類中呼叫;

#如果子類呼叫的方法可以在子類中找到,則使用子類的方法

#這種子類重新實現了基類原有的方法我們稱為-------------方法過載(重寫)

class person(object):

def init_person (self,name,age):

self.name=name

self.age=age

print 'name:'+self.name

print'age:',self.age

class man(person):

def init_person(self,name,age):

print 'man init_person'

m=man()

m.init_person('tom',23)

#如果子類中可以找到呼叫的方法,子類還想用基類的同名方法,可以基類顯式呼叫

class person(object):

def init_person (self,name,age):

self.name=name

self.age=age

print 'name:'+self.name

print'age:',self.age

class man(person):

def init_person(self,n,a,***):

person.init_person(self,n,a)

self.***=***

print '***:',self.***

print 'man init_person'

class woman(person):

def init_person(self,n):

person.init_person(self,n,'')

print 'man init_person'

m=man()

m.init_person('tom',23,'girl')

w=woman()

w.init_person('marry')

#多型---------------------

#物件呈現多中狀態成為多型

#在繼承關係中,子類繼承了父類的屬性和方法

#子類也可以有自己的方法,那麼我們可以稱子類具有多型性

#三. 抽象類----包含抽象方法的類。抽象方法中部包含任何實現的**

#實現的**都在子類中下實現。

#在python中定義抽象類

#(1)從類庫abc中匯入abcmeta類和abstractmethod類

#from abc import abcmeta,abstractmethod

#(2)在類的**塊中指定該類的元類是abcmeta _metaclass_=abcmeta

#(3)在抽象類裡定義抽象方法加上裝飾符 @abstractmethod

from abc import abcmeta,abstractmethod

class person:

__metaclass__=abcmeta

@abstractmethod

def abc(self):

pass

def output(self):

print'this is abstractmethod!'

class man(person):

def abc(self):

print 'this is man!'

m=man()

m.abc()

m.output()

python 類和物件關係及物件建立過程

python從設計之初就已經是一門物件導向的語言,正因為如此,在python中建立乙個類和物件是很容易的類 class 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。類由 類名 屬性 方法 構成 方法 類中定義的函式。類變數 類變數在整個例項化...

物件導向及類

物件導向的特徵 封裝 繼承 多型。物件導向設計的過程就是乙個抽象的過程 1 發現類,類定義的物件會擁有屬性和方法。2 發現類的屬性,物件有的靜態特徵在類中表示是被稱作類的屬性。3 發現類的行為,物件所執行的操作叫做類的方法。類的定義 class 類名 類中的public和private表明後面所跟成...

Python類及獲取物件屬性方法解析

1.類外面新增物件屬性 class washer def wash self print do some laundry stuff haier1 washer 新增屬性,物件名 屬性名 值 haier1.width 400 haier1.height 500 物件屬性既可以在類外面新增和獲取,也可...