物件導向雜項

2021-08-21 12:50:54 字數 3840 閱讀 6266

一、為物件定製自己獨有的屬性

例1class oldboystudent:

school='oldboy'

def choose_course(self):

print('is choosing course')

stu1=oldboystudent()

stu2=oldboystudent()

stu3=oldboystudent()

物件本質也就是乙個命名空間而已,物件命名空間是用存放物件自己獨有的名字/屬性,而

類中存放的是物件們共有的屬性

# print(stu1.__dict__)

# print(stu2.__dict__)

# print(stu3.__dict__)

stu1.name='耗哥'

stu1.age=18

stu1.***='male'

# print(stu1.name,stu1.age,stu1.***)

# print(stu1.__dict__)

stu2.name='豬哥'

stu2.age=17

stu2.***='male'

stu3.name='帥翔'

stu3.age=19

stu3.***='female'

例2class oldboystudent:

school='oldboy'

def choose_course(self):

print('is choosing course')

stu1=oldboystudent()

stu2=oldboystudent()

stu3=oldboystudent()

def init(obj,x,y,z):

obj.name=x

obj.age=y

obj.***=z

stu1.name='耗哥'

stu1.age=18

stu1.***='male'

init(stu1,'耗哥',18,'male')

stu2.name='豬哥'

stu2.age=17

stu2.***='male'

init(stu2,'諸哥',17,'male')

stu3.name='帥翔'

stu3.age=19

stu3.***='female'

init(stu3,'帥翔',19,'female')

print(stu1.__dict__)

print(stu2.__dict__)

print(stu3.__dict__)

二、屬性查詢

class oldboystudent:

school='oldboy'

def __init__(obj, x, y, z): #會在呼叫類時自動觸發

obj.name = x #stu1.name='耗哥'

obj.age = y #stu1.age=18

obj.*** = z #stu1.***='male'

def choose_course(self):

print('is choosing course')

呼叫類時發生兩件事

1、創造乙個空物件stu1

2、自動觸發類中__init__功能的執行,將stu1以及呼叫類括號內的引數一同傳入

stu1=oldboystudent('耗哥',18,'male') #oldboystudent.__init__(stu1,'耗哥',18,'male')

stu2=oldboystudent('豬哥',17,'male')

stu3=oldboystudent('帥翔',19,'female')

print(stu1.__dict__)

print(stu2.__dict__)

print(stu3.__dict__)

三、繫結方法

class oldboystudent:

school='oldboy'

def __init__(self, x, y, z): #會在呼叫類時自動觸發

self.name = x #stu1.name='耗哥'

self.age = y #stu1.age=18

self.*** = z #stu1.***='male'

def choose_course(self,x):

print('%s is choosing course' %self.name)

def func():

pass

類命名空間中定義的資料屬性和函式屬性都是共享給所有物件用的

物件命名空間中定義的只有資料屬性,而且時物件所獨有的資料屬性

stu1=oldboystudent('耗哥',18,'male')

stu2=oldboystudent('豬哥',17,'male')

stu3=oldboystudent('帥翔',19,'female')

print(stu1.name)

print(stu1.school)

類中定義的函式是類的函式屬性,類可以使用,但使用的就是乙個普通的函式而已,意味著需要完全遵循函式的引數規則,該傳幾個值就傳幾個

print(oldboystudent.choose_course)

oldboystudent.choose_course(123)

類中定義的函式是共享給所有物件的,物件也可以使用,而且是繫結給物件用的,

繫結的效果:繫結給誰,就應該由誰來呼叫,誰來呼叫就會將誰當作第乙個引數自動傳入

print(id(stu1.choose_course))

print(id(stu2.choose_course))

print(id(stu3.choose_course))

print(id(oldboystudent.choose_course))

print(id(stu1.school))

print(id(stu2.school))

print(id(stu3.school))

print(id(stu1.name),id(stu2.name),id(stu3.name))

stu1.choose_course(1)

stu2.choose_course(2)

stu3.choose_course(3)

stu1.func()

補充:類中定義的函式,類確實可以使用,但其實類定義的函式大多情況下都是繫結給物件用的,所以在類中定義的函式都應該自帶乙個引數self

四、類即型別

在python3中統一了類與型別的概念,類就是型別

class oldboystudent:

school='oldboy'

def __init__(self, x, y, z): #會在呼叫類時自動觸發

self.name = x #stu1.name='耗哥'

self.age = y #stu1.age=18

self.*** = z #stu1.***='male'

def choose_course(self,x):

print('%s is choosing course' %self.name)

stu1=oldboystudent('耗哥',18,'male')

# stu1.choose_course(1) #oldboystudent.choose_course(stu1,1)

# oldboystudent.choose_course(stu1,1)

l=[1,2,3] #l=list([1,2,3])

# print(type(l))

print(l)

物件導向 初識物件導向

面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面向過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要分哪些類,然後對這些類進行單獨思考,最後才是對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題 對於...

物件導向程式設計01 面向過程 物件導向

前面12講我已經寫完了從零開始學j ase 慶祝完結撒花!那麼從今天開始正式步入物件導向程式設計。建議開啟本章之前先回顧 j ase010方法詳解和 j a變數與方法的呼叫 同類操作中與跨類操作中的對比 物件導向程式設計 oop object oriented programming 物件導向程式設...

物件導向過程與物件導向

物件導向過程與物件導向 1 程式的發展經歷了兩個階段 面向過程 物件導向。2 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...