標籤:
Python學習系列(八)( 物件導向基礎)
Python學習系列(七)( 資料庫編程)
一,物件導向
1,域:屬於一個對象或類的變數。有兩種類型,即執行個體變數—屬於每個執行個體/類的對象;類變數—屬於類本身。2,類的方法:對象也可以使用屬於類的函數來具有功能,這樣的函數稱之為類的方法。域和方法合稱為類的屬性。類使用class關鍵字建立,類的屬性被列在一個縮排塊中。3,self:類的方法與普通的函數只有一個特別的區別----他們必須有一個額外的第一個參數名稱,但是在調用的時候不能為其賦值,Python會提供。這個特別的變數指對象本身,按照慣例命名為self。self等價於C++中的self指標和Java,C#中的this。建立一個類:
1 class Person:2 pass3 4 p=Person()5 print p6 >>> ============= RESTART ================================7 >>>8 <__main__.Person instance at 0x02A99B98>
View Code4,使用對象的方法:1)
1 class Person:2 def sayHi(self):3 print ‘Hello,how are you?‘4 5 p=Person()6 p.sayHi()
View Code2)使用__init__方法
1 class Person:2 def __init__(self,name):3 self.name=name4 5 def sayHi(self):6 print ‘Hello,my name is‘,self.name7 8 p=Person(‘John‘)9 p.sayHi()
View Code
3)使用類與對象的變數
1 class Person: 2 ‘‘‘Represents a person.‘‘‘ 3 population=0 4 def __init__(self,name): 5 ‘‘‘Initializes the person‘s data.‘‘‘ 6 self.name=name 7 print ‘(Initializing %s)‘%self.name 8 Person.population +=1 9 10 def __del__(self):11 ‘‘‘I‘m dying.‘‘‘12 print ‘%s says bye.‘%self.name13 Person.population -=114 if Person.population==0:15 print ‘‘‘I‘m the last one.‘‘‘16 else:17 print ‘There are still %d people left.‘%Person.population18 19 def sayHi(self):20 ‘‘‘Greeting by the person.21 22 Really,that‘s all it does.‘‘‘23 print ‘Hello,my name is%s.‘%self.name24 25 def howMany(self):26 ‘‘‘Prints the current population.‘‘‘27 if Person.population==1:28 print ‘‘‘I‘m the only one here.‘‘‘29 else:30 print ‘We have %d person here.‘%Person.population31 32 33 p=Person(‘John‘)34 p.sayHi()35 p.howMany()36 37 p1=Person(‘John1‘)38 p1.sayHi()39 p1.howMany()40 41 p.sayHi()42 p.howMany()
View Code
屬性參考:使用self變數來參考同一個對象的變數和方法。
二、繼承
1,繼承是用來描述類之間的類型和子類型關係。2,多態現象:一個子類型在任何需要父類型的場合可以替換父類型,即對象可以被視作父類的執行個體。3,基本類(超類)和子類(匯出類)4,樣本:
1 class SChoolMember: #教師與學生的公有屬性,基類 2 ‘‘‘Represents any SChoolMember.‘‘‘ 3 def __init__(self,name,age): 4 ‘‘‘Initializes the person‘s data.‘‘‘ 5 self.name=name 6 self.age=age 7 print ‘(Initializing SChoolMember %s)‘%self.name 8 9 def tell(self):10 ‘‘‘Tell my details.‘‘‘11 print ‘‘‘Name:%s\nAge:%s‘‘‘%(self.name,self.age)12 13 class Teacher(SChoolMember): #教師子類14 ‘‘‘Represents any Teacher.‘‘‘15 def __init__(self,name,age,salary):16 ‘‘‘Initializes the person‘s data.‘‘‘17 SChoolMember.__init__(self,name,age) #繼承18 self.salary=salary19 print ‘(Initializing Teacher %s)‘%self.name20 21 def tell(self):22 ‘‘‘Tell my details.‘‘‘23 SChoolMember.tell(self) #繼承24 print ‘‘‘Salary:%d‘‘‘%self.salary25 26 class Student(SChoolMember): #學生子類27 ‘‘‘Represents any Student.‘‘‘28 def __init__(self,name,age,marks):29 ‘‘‘Initializes the person‘s data.‘‘‘30 SChoolMember.__init__(self,name,age) #繼承31 self.marks=marks32 print ‘(Initializing Student %s)‘%self.name33 34 def tell(self):35 ‘‘‘Tell my details.‘‘‘36 SChoolMember.tell(self) #繼承37 print ‘‘‘Marks:%d‘‘‘%self.marks38 39 40 t=Teacher(‘Mrs.Jhon‘,40,4000)41 s=Student(‘zhangbc‘,23,90)42 members=[t,s]43 for member in members:44 member.tell()45 print ‘‘
View Code
三、小結 時隔快一年了,動筆生疏了,想想還是學習比較踏實吧。本篇幅較短,重在理解,後續逐漸完善。
Python學習系列(八)( 物件導向基礎)