python入門15物件導向程式設計思想

2021-08-28 03:53:26 字數 3913 閱讀 4230

(1)類的概述

#一種資料型別,本身不佔記憶體空間;用類建立例項化物件,物件佔記憶體空間#

①設計類

類名:首字母大寫,其他遵循駝峰原則

屬性:行為(方法/功能):

例:  類名:wife

屬性:*** age height weight facevalue

行為:做飯 洗衣服 拖地

②類格式

class 類名(父類列表):

屬性行為 object:基類,超類,所有類的父類

例:class person(object):

#定義屬性

name=""

age=0

height=0

#方法def run(self):

print("run")

def eat(self,food):

print("eat"+food)

③例項化物件

物件命=類名(引數列表) 沒有引數小括號也不能省略

④訪問物件的屬性,方法

格式:物件名.屬性名

賦值:物件名.屬性名=新值

修改屬性值:1.直接修改屬性的值

2.通過方法修改屬性的值

3.通過方法對屬性的值進行遞增

格式:物件名.方法名(引數列表)

⑤ 物件的初始狀態(建構函式)

使用類建立物件的時候自動呼叫

不顯示寫出,缺省會自動新增乙個空的建構函式

def  __init__(self,attr...):

self.attr=attr

self....=...

pass

(2)self

self代表類的例項,而非類

物件呼叫方法,方法中的self代表物件。

self._ class _ 代表類名

(3)析構函式與重寫函式

析構函式_ del _() 釋放物件時自動呼叫

在函式裡定義的物件,會在***函式結束***時自動釋放,這樣可以用來減少記憶體空間的釋放

重寫函式_ repr _ 與 _ str _

重寫:將函式重新寫一遍

print(物件名)

_ str _():在呼叫print列印物件時自動呼叫,給使用者用的 return " "

_ repr _():給機器用的,python直譯器裡 敲物件後呼叫的方法

注意:在沒有str時,有repr str=repr

(4)訪問限制

如果要讓內部屬性不被外部直接訪問,在python中如果在屬性前加兩個下劃線,那麼這個屬性就變成了私有屬性

self.__money = money

不能直接訪問類名.__money是因為python直譯器把__money變成了_類名__money

#通過內部方法,修改私有屬性

def setmoney(self,money):

if money<0:

money =0

self.__money = money

#獲取私有屬性

def getmoney(self):

return self.__money

__ xx__屬於特殊變數,可以直接訪問

_x變數 雖然可以訪問,但是請視為私有

(5)類例項

人開槍設計子彈

人 類名:person

屬性:gun

行為:fire

槍 類名:gun

屬性:bulletbox

行為:shoot

彈夾 類名:bulletbox

屬性:bulletcount

行為:

class bulletbox(object):  # 彈夾類

def __init__(self, count):

self.bulletcount = count

class gun(object):

def __init__(self, bulletbox):

self.bulletbox = bulletbox

def shoot(self):

if self.bulletbox.bulletcount == 0:

print("沒有子彈了")

else:

self.bulletbox.bulletcount -= 1

print("剩餘子彈", self.bulletbox.bulletcount, "發")

class person(object): # 人類

def __init__(self, gun):

self.gun = gun

def fire(self):

self.gun.shoot()

def fillbullet(self):

self.gun.bulletbox.bulletcount += 1

bulletbox = bulletbox(5)

gun = gun(bulletbox)

per = person(gun)

per.fire()

per.fire()

per.fillbullet()

per.fire()

(6)繼承:

簡化**,減少冗餘

提高**健壯性

提高**安全性

多型的前提

單繼承例項:

class person(object):

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

self.name=name

self.age=age

self.__money=money

def setmoney(self,money):

self.__money=money

def getmoney():

return self.__money

class student(person):

def __init__(self,name,age):

#呼叫父類中的__init__

super(student,self).__init__(name,age)

stu = student("tom",18,12345)

print(stu.name,stu.age)

print(stu.getmoney()) #通過繼承過來的公用方法訪問私有屬性

多繼承例項:

class father(object):               #父親類

def __init__(self,money):

self.money=money

def play(self):

print("play")

def func(self):

print("func")

class mother(object): #母親類

def __init__(self,facevalue):

self.facevalue=facevalue

def eat(self):

print("eat")

def func(self):

print("func")

class child(father,mother): #孩子類

def __init__(self,money,facevalue):

#寫法father.__init__(self,money)

mother.__init__(self,facevalue)

#父類中方法名相同,預設呼叫在括號中排前面的父類中的方法

python入門 P37類和物件 物件導向程式設計

class相當於房子圖紙,每個物件是參照圖紙建立的實際的房子,self相當於每一棟房子的門牌號,在下面這段 裡,每個物件都是呼叫了自己那棟房子裡的方法,就是因為self tips 在方法裡,self必須是第乙個 class build def setname self,name self.name ...

15 Python 物件導向

物件導向 oop 是一種對現實世界理解和抽象的方法,物件的含義是指在現實生活中能夠看得見摸得著的具體事物,一句比較經典的描述是一切皆物件,python 是一門物件導向的語言,物件導向程式設計簡單來說就是一種封裝 的方式。物件導向相關概念 1.類 python 中類的定義使用 class 關鍵字 cl...

15 Python物件導向

2 物件導向程式設計的主要概念 3 物件導向設計原則 本文主要介紹物件導向程式設計的主要概念以及物件導向設計原則。在進行開發的時候經常會提到物件導向,在物件導向的世界引入了物件的概念,物件既有屬性又有對應的過程,這裡的屬性通常就是指我們的資料成員,過程就是指我們的成員函式,函式的作用就是處理屬性。在...