1. 程式人生 > >十四.Python_面向物件程式設計

十四.Python_面向物件程式設計

Python_面向物件程式設計

#三大程式設計正規化
# 函數語言程式設計   #程式碼量少但複雜
# 程序式程式設計     #將複雜的邏輯分解為一個個小的邏輯功能,從而完成大型複雜的專案的思路
# 面向物件程式設計    #利用物件的思想進行程式設計

# 利用函式模擬面向物件
if __name__=="__main__":
    #模擬類
    def dog(name,color,type):
        #模式類的初始化
        def init(name,color,type):
            #利用字典模擬初始化物件
            dog={"name":name,   #使模擬的物件擁有名字的屬性
                 "color":color, #使模擬的物件擁有顏色的屬性
                 "type":type,   #使模擬的物件擁有型別的屬性
                 "bark":bark,  #使模擬的物件擁有bark函式的行為
                 "sleep":sleep,#使模擬的物件擁有sleep函式的行為
            }
            return dog   #返回例項化的物件
        def bark(self):           #bark函式
            print("一條%s的狗:汪汪汪!"%self["color"])  #模擬某個物件的叫的功能
        def sleep(self):
            print("一隻%s正在睡覺!"%self["type"])    #模擬某個物件的睡覺的功能
        return init(name,color,type)  #返回例項化的物件

    #利用函式模擬例項化物件的過程
    dog1=dog("小黃","黃色","藏獒")
    #呼叫模擬的物件叫的功能
    dog1["bark"](dog1)
    #利用模擬物件睡覺的功能
    dog1["sleep"](dog1)

#class
#利用類完成面向物件    class完成面向物件比函式更加專業
#__init__   將類例項化的函式
#self       指的是自己這個類的物件
#
    #物件擁有的兩類元素:  1. 物件的屬性元素, 2. 物件的行為元素
#用 . 訪問物件屬性或行為

    class dog:  #建立物件的類
        def __init__(self,name,color,type):  #將類的屬性例項化物件
            self.mingzi=name                #給類的屬性賦值
            self.yanse=color
            self.leixing=type
        def bark(self):                    #定義類叫的行為
            print("%s 的狗正在汪汪汪!"%self.yanse)
        def sleep(self):                     #定義類睡覺的行為
            print("一隻叫 %s 的 %s 正在睡覺!"%(self.mingzi,self.leixing))

    dog2=dog("小黃","黃色","藏獒")   #類例項化為物件
    dog2.bark()                       #物件呼叫叫的行為
    dog2.sleep()                        #物件呼叫睡覺的行為

    #面向物件的增刪改查操作

    #查詢
    print("這隻狗叫 %s"%dog2.mingzi)
    #增
    dog2.leg=5
    print("這隻叫%s的狗有%s條腿!"%(dog2.mingzi,dog2.leg))

    #改
    dog2.leg=4
    print("這隻叫%s的狗現在還剩%s條腿!" % (dog2.mingzi, dog2.leg))

    #刪
    del dog2.leg
    #print(dog2.leg)   AttributeError: 'dog' object has no attribute 'leg'