一、為物件定製自己獨有的屬性三、繫結方法例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 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...