#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 物件屬性既可以在類外面新增和獲取,也可...