Python 物件導向的程式設計

2021-09-05 09:18:22 字數 3242 閱讀 8322

table of contents

物件導向程式設計

類和物件是物件導向程式設計的兩個主要方面。類 建立乙個新型別,而 物件 是這個類的 例項 。

類的物件可以使用屬於類的變數和函式,類的變數和函式有兩種:屬於每個例項/類的物件或屬於類本身。就像 c++ 的類的靜態變數和函式一樣。

python 有乙個變數指物件本身,按照慣例它的名稱是self。和 c++ 的 this 指標一樣。

定義使用如下:

class person:

def sayhi(self):

print 'hello, how are you?'

p = person()

p.sayhi()

__init__方法在類的乙個物件被建立時,馬上執行。這個方法可以用來對你的物件做一些你希望的 初始化 。類似於 c++ 中的建構函式。

class person:

def __init__(self, name):

self.name = name

class person:

'''represents a person.'''

population = 0

__privatevar = 0

_protectedvar = 0

def __init__(self, name):

'''initializes the person's data.'''

self.name = name

person.population += 1

def __del__(self):

'''i am dying.'''

person.population -= 1

p = person("jack")

person.population = 100

p._protectedvar = 33

這裡,population屬於person類,因此是乙個類的變數。name變數屬於物件(它使用self賦值)因此是物件的變數。

記住,你能使用self變數來參考同乙個物件的變數和方法。這被稱為 屬性參考 。

(1)_xx 以單下劃線開頭的表示的是 protected 型別的變數。即保護型別只能允許其本身與子類進行訪問。若內部變數標示,如: 當使用 from m import 時,不會將以乙個下劃線開頭的物件引入 。protected 型別的變數和方法 在類的例項中可以獲取和呼叫。

(2)__xx 雙下劃線的表示的是私有型別的變數。只能允許這個類本身進行訪問了,連子類也不可以用於命名乙個類屬性。

同樣,注意 __del__ 方法與 c++ 中的 析構函式 的概念類似。

物件導向的程式設計帶來的主要好處之一是**的重用,實現這種重用的方法之一是通過 繼承 機制。乙個子型別在任何需要父型別的場合可以被替換成父型別,即物件可以被視作是父類的例項,這種現象被稱為多型現象。這點類似於 c++。

class schoolmember:

'''represents any school member.'''

def __init__(self, name, age):

self.name = name

self.age = age

print '(initialized schoolmember: %s)' % self.name

def tell(self):

'''tell my details.'''

print 'name:"%s" age:"%s"' % (self.name, self.age),

class teacher(schoolmember):

'''represents a teacher.'''

def __init__(self, name, age, salary):

schoolmember.__init__(self, name, age)

self.salary = salary

print '(initialized teacher: %s)' % self.name

def tell(self):

schoolmember.tell(self)

print 'salary: "%d"' % self.salary

class student(schoolmember):

'''represents a student.'''

def __init__(self, name, age, marks):

schoolmember.__init__(self, name, age)

self.marks = marks

print '(initialized student: %s)' % self.name

def tell(self):

schoolmember.tell(self)

print 'marks: "%d"' % self.marks

t = teacher('mrs. shrividya', 40, 30000)

s = student('swaroop', 22, 75)

print # prints a blank line

members = [t, s]

for member in members:

member.tell() # works for both teachers and students

輸出:

(initialized schoolmember: mrs. shrividya)

(initialized teacher: mrs. shrividya)

(initialized schoolmember: swaroop)

(initialized student: swaroop)

name:"mrs. shrividya" age:"40" salary: "30000"

name:"swaroop" age:"22" marks: "75"

如果在繼承元組中列了乙個以上的類,那麼它就被稱作 多重繼承 。

class a( b, c ):

...

Python物件導向的程式設計

1 使用類名後跟一對圓括號來建立乙個物件 例項。2 python中的self等價於c 中的this指標。3 init 方法類似於c 中的constructor。4 del 方法類似於c 中的destructor。5 域是屬於乙個物件或類的變數。域有兩種型別 例項變數 物件的變數 和類變數 類的變數 ...

Python 物件導向的程式設計

什麼是物件?物件導向 oop 物件導向的程式語言 物件導向的程式設計思想,將所有的功能統一儲存到對應的物件中 比如,媽媽功能儲存到媽媽的物件中,孩子的功能儲存到孩子物件中 要使用某個功能,直接找到對應的物件即可 這種方式編寫的 比較容易閱讀,並且比較易於維護,容易復用。但是這種方式編寫,不太符合常規...

物件導向的程式設計(python)

計算兩點間的距離 class point object def init self,x 0,y 0 self.x,self.y x,y defdistance to self,other dx self.x other.x dy self.y other.y return dx dx dy dy 0...