python 面對對象基礎

面向對象基礎

面向對象編程(抽象)

回顧一下編程

面向過程編程(思想 )app

流水線函數

優勢:邏輯清晰(邏輯一步步的,系統)code

缺點:擴展性差(上一個函數的輸出是下一個函數的輸入)對象

面向對象編程(思想)blog

對象: 特徵和技能的結合體it

面對對象編程:一個個對象進行交互面向對象編程

優勢:擴張性很是強class

缺點:邏輯很是複雜

類與對象

類(類別):一系列具備相同特徵和技能的對象

現實世界中先有對象,後有類

# 定義學生

    # 姓名: 豬瑞星
    # 學號: 222222
    # 學校: oldboy
        # 技能:選課,三十六變
    
    
    # 姓名: 孔悟空
    # 學號: 111111
    # 學校: oldboy
        # 技能:選課,七十二變
        
    # 姓名: 雷公
    # 學號: 666666
    # 學校: oldboy
        # 技能: 教課,piao
        
# 定義老師
    
    # 姓名: tank
    # 學校: oldboy
        # 技能: 教課,piao
    
    
    # 姓名: nick
    # 學校: oldboy
        # 技能:教課,看書

python中先有類,再有對象

class 類名(駝峯體): # 定義類,會直接運行類體內的代碼
    # 定義一系列特徵
    # 定義一系列方法
    
對象1 = 類名() # 實例化出對象

給對象定製獨有的特徵

class OldBoyStudent:
    school = 'oldboy'
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def choose_course(self):
        print(' is choosing course')
        
stu1 = OldBoyStudent('gll',18)
stu1.school

stu2 = OldBoyStudent('nick',18)
stu2.school

對象的屬性查找順序

# 局部存在
class OldBoyStudent:
    school = 'oldboy'
    name ='nick'
    def __init__(self,name,age):
        self.name = name
        self.age = age
        
    def choose_course(self):
        print('is choosing course')
        
stu1 = OldBoyStudent('gll',18)
print(stu1.name) # gll

stu2 = OldBoyStudent('nick',18)
print(stu2.name) # nick

# 局部找不到
class OldBoyStudent:
    school = 'oldboy'
    name ='nick'
    def __init__(self,name,age):
        #self.name = name
        self.age = age
        
    def choose_course(self):
        print('is choosing course')
        

stu1 = OldBoyStudent('gll',18)
print(stu1.name) # nick

stu2 = OldBoyStudent('nick',18)
print(stu2.name) # nick

類與對象的綁定方法

class OldBoyStudent:
    school = 'oldboy'
    
    def __init__(self,name,age):
        self.name = name
        self.age = age
        
     def choose_course(self):
        print(id(self))  #1983522658680
        print(self.school)
        print(f'{self.name} is choosing course')
        print(name)
        
stu1 = OldBoyStudent('gll',18)
stu1.choose_course() # self 是對象自己
print(id(stu1)) #1983522658680

OldBoyStudent.choose_course(stu1)

# 注:
# 針對類而言:choose_course裏的self就是傳的參數
# 針對對象而言:choose_course裏的self就是對象自己

類與數據類型

lis = [1,2,3]
lis2 =list([1,2,3])
# 下面兩式等同,理解參數self的概念
lis.append(4) # self自動傳lis
# lis2.append(lis,4)  # 手動傳lis

對象的高度整合

在類裏面封裝了一大堆特徵/數據,而後又封裝了一大堆方法(方法用來專門用來操控這些數據的),而且在這基礎上對於不一樣對象,這些屬性和方法有不同

class Animal:
    def __init__(self,attri,height,weight):
        self.attri = attri
        self.height = height
        self.weight = weight
    
    def jiao(self):
        print('self.attr,'開始叫了')
    
    def eat(self):
        print('self.attri,'開始吃飯了')
        
people = Animal('人類',180,140)
dog = Animal('狗',100,50)

people.eat()
dog.jiao()

😂累了就放鬆一下吧

相關文章
相關標籤/搜索