python27期day19:面向對象

一、class GirlFriend(object):    #定義女友類:    eyes = 2    #類屬性(靜態屬性),是屬於當前類的    #當前類的全部對象,所共有的特徵    sex = "女"    """    說明    """    #初始化方法    def __init__(self,name,age,height,weight):        #實例屬性        self.name = "qwe"        self.age = age        self.height = height        self.weight = weight        #函數屬性    def xiyifu(self):        #定義洗衣服功能:        print(self.name,"洗衣服")    def chuitu(self):        #定義捶腿功能:        print("捶腿")    def tiwolianji(self):        #定義替我聯機功能:        print("打怪升級")二、#調用類屬性,須要使用類名去調用(對象名也能夠調用,可是不建議)# print(GirlFriend.name)三、#類名不能調用實例屬性,也不要去調用實例方法print(GirlFriend.eyes)四、#能夠在對象建立時,就讓他擁有不一樣的屬性值girl_1 = GirlFriend("迪麗熱巴",18,170,170)#經過對象調用類屬性,沒問題#可是不能修改print(girl_1.eyes)五、#若是經過對象去修改類屬性,會建立一個新的實例屬性,這個實例屬性在對象中會覆蓋掉類屬性girl_1.eyes = 3GirlFriend.eyes = 3print("girl1的",girl_1.eyes)六、#實例屬性的增長girl_1.money = 100七、#實例屬性的刪除del girl_1.name八、#實例屬性的修改girl_1.age = 19九、#實例屬性的查看print(girl_1.age)十、#修改某個對象的實例屬性,對當前類的其餘對象,沒有任何影響#若是,在類中作了修改,全部對象都會發生改變girl_1.chuitu()girl_1.tiwolianji()# girl_1.name = "迪麗熱巴"#在類的外部,給對象添加屬性# girl_1.money = 100# print(girl_1.money)girl_2 = GirlFriend("baby",35,120,250)print(girl_2.name)print("girl2的",girl_2.eyes)十一、#定義天使:#光圈,翅膀,有眼睛,有腿等等,漂亮,善良,會飛,有法力,能打壞人,能救人,治療#類是一個模板(裏面放了一些屬性和方法)#對象(也叫當前類的一個實例),是經過類建立出來的,用來完成具體工做十二、#設計程序的思路:#首先,根據需求,來設計類,這個過程被稱爲"抽象",從真實存在的事務當中,抽象出共同的屬性和方法1三、# #類名,你們約定俗成,首字母大寫# class Person:#     def __init__(self):#         #放屬性#         self.name = "小明"#         self.age = 18#     #方法和屬性,只關心完成當前工做所須要的#     def eat(self):#         #具體的工做(算法)#         print("人能夠吃東西")# #self:哪一個對象調用了當前方法,self就表明誰#     def run(self):#         print(self.name)#         print("人會跑")## #建立對象(實例化)# 小明 = Person()# 小明.run()# print(小明.name,小明.age)1四、# class Hero:#     def __init__(self,name,HP,MP,ATK):#         self.name = name#         self.hp = HP#         self.mp = MP#         self.atk = ATK#     def jineng1(self):#         print("電光毒龍鑽")#         self.hp -= 20##     def jineng2(self):#         print("摸雞頭下蛋")## alex = Hero("alex",100,200,250)# bigB = Hero("元寶",200,50,300)# alex.at = 123123123# del alex.jineng1# alex.jineng1()# if alex.hp <= 0:#     del alex# alex.atk = 20# print(alex.name)1五、# 建立一個英雄類:# • 包含英雄的各項屬性:例如血量魔法值等等(注意哪些應該是類屬性,哪些應該做# 爲實例屬性)# • 英雄有自殘的能力,自殘後會掉血# class Hero:#     def __init__(self,hp):#         self.hp = hp  #血量#         self.mp = 200 #魔法值#     def zican(self):#         print("我鑽我本身")          #自身數量值減1#         self.hp -= 11六、# • 建立一個狗類:# • 包含名字,顏色,品種,年齡,性別等屬性# • 有一個自我介紹的方法,打印自身的屬性信息(我叫XXX。。。)# • 狗有看家的能力,狗有叫的能力,在看家方法中調用叫的方法# class Dog:    #定義狗類:    # def __init__(self,name,color,type,age,sex):    #實例化姓名、顏色、品種、年齡、性別    #     pass    # def ziwojieshao(self):    #     print("我叫",self.name,)#     def kanjia(self):        #類裏面的方法相互調用:#         self.jiao()#     def jiao(self):#         print("汪~汪~")# douding = Dog()# douding.kanjia()1七、num = 0class Hero:    num = 0    def __init__(self):        self.name = "abc"        Hero.num += 1   #數量自加1    def run(self):        print("會跑")for i in range(10):    "循環調用10圈"    alex = Hero()bigB = Hero()a = Hero()print(Hero.num)1八、## 面向過程(函數式編程)經過數學邏輯去解決問題(設計算法,獲得想要的結果)函數式編程:提升了代碼的複用性,提升了維護性## 面向對象python中 萬物皆對象面向過程,的程序,執行效率高面向對象,的開發效率高類:一類具備相同特徵的事物的總稱對象:經過類,建立的一個具體事務,用來完成工做基礎數據結構(列表,元組...)是數據的封裝,函數是算法的封裝類:是抽象出來的,數據和算法都能封裝,可維護性更高,能處理更復雜的問題,代碼邏輯更清晰建立類和對象的格式過程描述:1,抽象2,經過抽象出的內容來設計類3,class 類名:​        屬性​        def __init__(self):​              self.XXX = XXX​        方法​        函數定義同樣4,建立對象:對象名 = 類名()5,調用對象的屬性和方法使用萬能的點.建立對象時:1,在內存中開闢一塊空間2,自動調用init方法python27day18面向對象--------------------------------------------------------------------------------------------一、#方法和函數究竟有什麼區別class Person:    def abc(self):        passa = Person()print(type(a.abc))print(type(Person.abc))#經過對象去調用時,是方法#其餘狀況,比方說經過類名調用,或者放在類外的時候叫函數二、#例一:class Baooy:    def __init__(self,name,girlFriend = None):        self.name = name        self.girlFriend = girlFriend    def eat(self):        if self.girlFriend:            print(f"{self.name}帶着他的女友{self.girlFriend}去吃飯")        else:            print("單身狗,吃狗糧")    def movie(self):        if self.girlFriend:                                                     #加self確認的            print(f"{self.name}帶着他的女友{self.girlFriend}去看電影")        #打印時必定加上self        else:            print("單身狗,回家看")a = Baooy("zs","zs1")a.eat()                     #對象調用函數屬性:a.movie()三、# class Person:#     def __init__(self,name,age):#         self.name = name#         self.hp = 100#     def play(self,tool):#         print(self.name,"鑽",tool.name)#         tool.hp -= 20#         print(tool.name,"還有",tool.hp,"點血")#     def kanjia(self,tool):#         tool.kanjia()# class Dog:#     def __init__(self,name,hp):#         self.name = name#         self.hp = hp#     def kanjia(self):#         print("汪~汪~~")## alex = Person("Alex",83)# bigB = Person("寶元",76)# alex.play(bigB)# xiaohei = Dog("小黑",20)# bigB.kanjia(xiaohei)四、#關聯關係就是在一個類的方法當中,引入了另外一個對象(另外一個類的對象)# 定義一個英雄類和一個反派類# • 兩個類都包含名字、血量,攻擊力(ATK),和一個技能(skill)# • 兩派對象互毆# • 血量爲0死亡,刪除對象(del 對象名)import randomclass Hero:    def __init__(self,name,hp,atk):        self.name = name        self.hp = hp        self.atk = atk    def skill(self,tool):           #tool = alex        print(self.name,"對",tool.name,"使出了波動拳") #name = 寶元,tool = alex        tool.hp -= self.atk * random.randint(1,5)/2class Boss:    def __init__(self,name,hp,atk):     #name = alex        self.name = name        self.hp = hp        self.atk = atk    def skill(self,tool):        print(self.name,"對",tool.name,"使出了獨孤九劍")    #name = alex、tool = bigB、tool.name = bigB.name = 寶元        tool.hp -= self.atk * random.randint(1,5)/2bigB = Hero("寶元",200,15)alex = Boss("alex",150,20)while True:    bigB.skill(alex)    alex.skill(bigB)    if bigB.hp <= 0:        print("遊戲結束")        del bigB                #刪除Hero的實例        break    if alex.hp <= 0:        print("遊戲結束")        del alex                #刪除Boss的實例        break結果:  寶元 對 alex 使出了波動拳        alex 對 寶元 使出了獨孤九劍        寶元 對 alex 使出了波動拳        alex 對 寶元 使出了獨孤九劍        寶元 對 alex 使出了波動拳        alex 對 寶元 使出了獨孤九劍        寶元 對 alex 使出了波動拳        alex 對 寶元 使出了獨孤九劍        寶元 對 alex 使出了波動拳        alex 對 寶元 使出了獨孤九劍        遊戲結束五、# class Father(object):#     #在py3中,若是一個類,沒有顯式的繼承任何一個類,那麼他默認繼承object#     # def __init__(self,name,age):#     #     self.name = name#     #     self.age = age#     def livelikeyemen(self):#         print("打媽媽")# class Son:#     def __init__(self,f):#         self.f = f#     def abc(self):#         self.f.livelikeyemen()#     #父類方法重寫#     def livelikeyemen(self):#         print("打妹妹")# daming = Father()# xiaoming = Son(daming)# xiaoming.abc()六、# class Anm(object):#       """定義動物類"""#     def __init__(self,name,age):#       """實例化姓名和年齡"""#         self.name = name#         self.age = age#     def run(self):#       """定義跑的方法"""#         print("123")# class Dog(Anm):#       """定義狗類繼承動物類"""#     #若是子類也有本身的初始化方法,可能會出錯#     #解決方式,在子類的init方法裏面,調用父類的init方法用super()#     def __init__(self,name,age):#         self.xihuanshi = True#         super().__init__(name,age)#     def jump(self):#         print("跳")#     def run(self):#         print("abc")#         """調用動物類的跑方法"""#         Anm.run(self)#         """運行動物類的跑方法"""#         super().run()# class Cat(Dog):#       """定義貓類繼承狗類"""#     def __init__(self):#       """調用狗類裏面的init方法用super()"""#         super().__init__()#     def jiao(self):#         print("喵喵~~~")# a = Dog("動物",20)# a.run()七、class 蛇:    def __init__(self):        self.ya = 2    def panta(self):        print("pan")    def run(self):        print("123")class 蜘蛛:    def __init__(self):        eyes = 8        jiao = 8    def 吐絲(self):        print("cici")    def run(self):        print("456")class 人(蜘蛛,蛇):    pass    # def __init__(self, name,age):    #     self.name = name    #     self.age = age    #     super().__init__()xiaoming = 人()xiaoming.run()八、# 類之間的關係## 依賴關係:執行某個動做的時候,須要其餘類的對象來幫助你完成這個動做            就是將一個類的對象或者類名放到另外一個類的方法當中就叫依賴            此時,類之間的關係是最輕的,由於隨時能夠更換其餘對象九、class Person:    def play(self,tools):        tools.run()        print("我要打遊戲了")class Compture:    def run(self):        print("電腦已經打開,DNF已登陸")class Phone:    def run(self):        print("王者榮耀已經登錄")xiaoMing = Person()xmPhone = Phone()hwCom = Compture()xiaoMing.play(xmPhone)  #一個類的對象或者類名放到另外一個類的方法當中xiaoMing.play(hwCom)    #一個類的對象或者類名放到另外一個類的方法當中結果:  王者榮耀已經登錄        我要打遊戲了        電腦已經打開,DNF已登陸        我要打遊戲了十、## 組合關係:將一個類的對象,放到另外一個類的屬性中(做爲一個組成部分)             一對一關係             一對多關係一對一關係:class Baooy:    def __init__(self,name,girlFriend = None):        self.name = name        self.girlFriend = girlFriend    def eat(self):        if self.girlFriend:            print(f"{self.name}帶着他的女友{self.girlFriend.name}去吃飯")        else:            print("單身狗,吃狗糧")    def movie(self):        if self.girlFriend:            print(f"{self.name}帶着他的女友{self.girlFriend.name}去看電影")        else:            print("單身狗不配看電影")class Girl:    def __init__(self,name):        self.name = namebao = Baooy("寶哥")friend = Girl("唐藝昕")bao.eat()bao.movie()bao.girlFriend = friendbao.eat()bao.movie()結果:  單身狗,吃狗糧        單身狗不配看電影        寶哥帶着他的女友唐藝昕去吃飯        寶哥帶着他的女友唐藝昕去看電影十一、## 繼承關係:在不改變現有類的狀況下,擴展這個類,子類能夠得到父類的全部屬性和方法            經過繼承建立的新類稱爲"子類"或"派生類",被繼承的類稱爲"基類"、"父類"或"超類"            在python中,同時支持單繼承與多繼承            增長了類的耦合性(耦合性不宜多,宜精)            減小了重複代碼            使得代碼更加規範化,合理化單繼承:子類能夠繼承父類的屬性和方法,修改父類,全部的子類都會受影響。python有兩個判斷繼承的函數    isinstance()用於檢查實例類型:isinstance(對象,類型)    issubclass()用於檢查類繼承:issubclass(子類,父類)繼承的格式:class 子類名(父類名):子類能夠定義本身的方法,也能夠定義和父類同名的方法(方法重寫),這時,子類方法會覆蓋掉父類的同名方法、super()關鍵字在當前類中調用父類方法super()關鍵字:·子類若是編寫了本身的構造方法,但沒有顯式調用父類的構造方法,而父類構造函數初始化了一些屬性,就會出現問題·若是子類和父類都有構造函數,子類實際上是重寫了父類的構造函數,若是不顯式調用父類構造函數,父類的構造函數就不會被執行·解決方式:調用超類構造方法,或者使用super函數super(當前類名,self).__init__()所以,若是子類和父類都擁有本身的初始化方法,須要在子類的初始化方法中調用父類的init方法多重繼承:包含多個間接父類多繼承·有多個直接父類·大部分面向對象的編程語言(除了C++)都只支持單繼承,而不支持多繼承·多繼承不只增長了編程的複雜度,並且很容易致使一些莫名的錯誤·Python雖然在語法上明確支持多繼承,但一般推薦若是不是頗有必要,則儘可能不要使用多繼承,而是使用單繼承·這樣能夠保證編程思路更清晰,並且能夠避免不少麻煩·若是多個直接父類中包含了同名的方法·此時排在前面的父類中的方法會「遮蔽」排在後面的父類中的同名方法class YeYe:    def __init__(self):        print("初始化爺爺")class Qinba(YeYe):    def __init__(self):        print("進入親爸類")        YeYe.__init__(self)        print("初始化親爸")class GanDie(YeYe):    def __init__(self):        print("進入乾爹類")        YeYe.__init__(self)        print("初始化乾爹")class ErZi(Qinba,GanDie):    def __init__(self):        Qinba.__init__(self)        GanDie.__init__(self)        print("初始化兒子")bigB = ErZi()結果:  進入親爸類        初始化爺爺        初始化親爸        進入乾爹類        初始化爺爺        初始化乾爹        初始化兒子十二、調用方式爲```父類名.__init__(self)```若是隻是想操做另外一個類的對象,用依賴若是兩個類當中存在has a 的關係,用組合若是是is a 的關係,用繼承(儘可能少用繼承,多用組合)1三、新式類:繼承了object的類,就叫新式類經典類:沒有繼承object的類py3中,全部的類都是新式類py2中,若是沒有顯式繼承,那麼這個類就沒有集成任何類,因此有經典類,也有新式類# class Boy:#     def __init__(self,name,tools = None):#         self.name = name#         self.girl = tools#     def play(self):#         if self.girl:#             print(self.name,"玩",self.girl.name)#         else:#             print("單身狗玩本身吧")## class Girl:#     def __init__(self,name):#         self.name = name# class Hero:#     def __init__(self,wuqi,hujia):#         self.wuqi = wuqi#         self.hujia = hujia#     def skill(self,tool):#         print(f"用{self.wuqi.name}打{tool.name}")#組合關係:將一個類的對象,做爲另外一類的屬性#一對多關係class Person:    def __init__(self):        self.girl = []    def bamei(self,g1):        self.girl.append(g1)    def play(self):        for i in self.girl:            print(i.name,end=" ")            i.play()class Girl:    def __init__(self,name,age):        self.name = name        self.age = age    def play(self):        print("陪玩")girl1 = Girl("小麗",18)girl2 = Girl("賈玲",30)girl3 = Girl("韓紅",50)bigB = Person()bigB.bamei(girl3)bigB.bamei(girl1)bigB.play()結果:  韓紅 陪玩        小麗 陪玩class Boy:    def __init__(self):        self.girl_list = []    def baMei(self,girl):        self.girl_list.append(girl)    def happy(self):        for i in self.girl_list:            i.play()class Girl:    def __init__(self,name):        self.name = name    def play(self):        print(f"{self.name}和你一塊兒玩")bao = Boy()friend1 = Girl("唐藝昕")friend2 = Girl("迪麗熱巴")friend3 = Girl("楊穎")bao.baMei(friend1)bao.baMei(friend2)bao.baMei(friend3)bao.happy()結果:  唐藝昕和你一塊兒玩        迪麗熱巴和你一塊兒玩        楊穎和你一塊兒玩1四、# 定義一個用戶類,用戶名和密碼是這個類的屬性,實例化兩個用戶,分別有不一樣的用戶名和密碼        # 登錄成功以後才建立用戶對象        # 設計一個方法 修改密碼# class User:#     def __init__(self,name,pw):#         self.name = name#         self.pw = pw#     def rPassW(self):#         newPW = input("請輸入新密碼")#         self.pw = newPW# num = 0# while True:#     userName = input("請輸入用戶名")#     userPW = input("請輸入密碼")#     if userName == "alex" and userPW == "123123":#         xiaoming = User("xiaoming","123abc")#         xiaoli = User("xiaoli","123456")#         break#     else:#         print("輸入有誤!,請從新輸入!")#         num += 11五、# 定義一個列表的操做類:Listinfo# 包括的方法:# 1 列表元素添加: add_key(keyname) [keyname:字符串或者整數類型]# 2 列表元素取值:get_key(num) [num:整數類型]# 3 列表合併:update_list(list) [list:列表類型]# 4 刪除而且返回最後一個元素:del_key()# list_info = Listinfo([44,222,111,333,454,'sss','333'])# class ListInfo:#     def __init__(self, lis):#         self.lis = lis#     def add_Key(self, keyname):#         self.lis.append(keyname)#     def get_key(self,num):#         return self.lis[num]#     def update_list(self, new_list):#         self.lis + new_list#     def del_key(self):#         return self.lis.pop()1五、# class A:#     Country = ['中國']                          # 靜態變量/靜態屬性 存儲在類的命名空間裏的#     def __init__(self,name,age,country):        # 綁定方法 存儲在類的命名空間裏的#         self.name = name#         self.age = age#     def func1(self):#         print(self)# a = A('alex',83,'印度')# b = A('wusir',74,'泰國')# a.Country[0] = '日本'# print(a.Country)# print(b.Country)# print(A.Country)結果:  ['日本']        ['日本']        ['日本']python27day20面向對象--------------------------------------------------------------------------------------------封裝」就是將抽象獲得的數據和行爲相結合,造成一個有機的總體·元組,列表,字典等等:數據的封裝,經過引用去使用數據·函數:算法的封裝·沒有函數,功能靠每一行代碼去直接執行·耦合度過高,複用性太差,開發效率過低封裝的目的是簡化編程和加強安全性·使用者沒必要關心該類具體的實現細節·經過接口(萬能的點)·還能夠給予的特定的訪問權限來使用類的成員·明確區份內外:·類的實現者能夠修改內部封裝的東西而不影響外部調用者·外部調用者只須要知道本身可使用該類對象的哪些功能私有屬性,私有方法·「雙下劃線」開始的是私有成員,在類外部不能夠直接用屬性或方法名調用,子類中也不能訪問到這個數據·能夠提供外界訪問的接口·將不須要對外提供的內容都隱藏起來·把屬性都隱藏,提供公共方法對其訪問·雙下滑線開頭的屬性在繼承給子類時,子類是沒法覆蓋的class Abc:    def __init__(self):        self.__name = "abc"    def __set(self,x):        self.__name = x    def get_name(self):        print(self.__name)a = Abc()print(a.__name) #直接訪問找不到結果:AttributeError: 'Abc' object has no attribute '__name' (AttributeError:「Abc」對象沒有屬性「\u name」)a.get_name()    #經過類裏面的函數屬性能夠找到結果:abc破解私有屬性和私有方法:·在名稱前加上_類名,即_類名__名稱·其實加雙下劃線僅僅是一種變形操做·類中全部雙下劃線開頭的名稱如__x都會自動變造成:_類名__x的形式class Abc:    def __init__(self):        self.__name = "abc"    def __set(self):        print("111")    def get_name(self):        print(self.__name)a = Abc()a._Abc__set()結果:111多態體現1:python是一種多態語言,不關心對象的類型·對於弱類型的語言來講,變量並無聲明類型,所以同一個變量徹底可    以在不一樣的時間引用不一樣的對象·毫無疑問,在python中對象是一塊內存,內存中除了包含屬性、方法之    外,還包含了對象類型,咱們經過引用來訪問對象,好比a=A(),首先    python建立一個對象A,而後聲明一個變量a,再將變量a與對象A聯繫起    來。變量a是沒有類型的,它的類型取決於其關聯的對象class Bird:    def move(self,field):        print("鳥在%s上自由地飛翔" %field)class Dog:    def move(self,field):        print("狗在%s裏飛快的奔跑" %field)x = Bird()x.move("天空")x = Dog()x.move("草地")結果:  鳥在天空上自由地飛翔        狗在草地裏飛快的奔跑同一個變量x:在執行同一個move()方法時,因爲x指向的對象不一樣,所以呈現出不一樣的行爲特徵,這就是多態。多態體現2:一類事物有多種形態(polymorphic)·一個抽象類有多個子類,但方法實現不一樣·例如:動物類有多個子類,每一個子類都從新實現了父類的某個方法,但    方法的實現不一樣(休息的方法)·此時須要有繼承,須要有方法重寫棧Stack和隊列Queue實現put和get方法:class Stack:    def __init__(self):        self.lis = []    def put(self,num):        self.lis.append(num)    def get(self):        if self.lis != []:            return self.lis.pop()class Queue:    def __init__(self):        self.lis = []    def put(self,num):        self.lis.append(num)    def get(self):        if self.lis != []:            return self.lis.pop(0)# 數據結構:數據在內存中的存放順序棧/隊列棧:FILO--3,2,1隊列:FIFO--1,2,3l = []l.put(1)l.put(2)l.put(3)l.get()l.get()l.get()多態:體現一:python中一個引用,能夠指向不一樣類型的對象體現二:一類事物,有多種形態多態性:在繼承和方法重寫的基礎上,定義一個統一的接口,不關心傳入對象的類型,只關心實現了哪些方法python崇尚鴨子類型·不關心類型,不須要繼承,只關注方法實現,這種狀況被稱爲鴨子類型·「當看到一隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這隻鳥就能夠被稱爲鴨子·在鴨子類型中,關注的不是對象的類型自己,而是它是如何使用的總結:Python自己就是支持多態性的·增長了程序的靈活性(通用性),以不變應萬變,不論對象變幻無窮,使用者都是同一種形式去調用·增長了程序的可擴展性,經過繼承某個類建立了一個新的類,接口使用者無需更改本身的代碼,仍是用原方法調用對比:·多態強調的是:一類事物不一樣的形態·多態性強調的是:同一操做,做用對象不一樣,表現出不一樣實現方式(只關心行爲結果)class Car:    def __init__(self,color):        self.color = color    def run(self):        print(self.color,"小汽車在跑")class Cat:    def __init__(self,name):        self.name = name    def run(self):        print("貓咪",self.name,"在跑")a = Car("紅色")a.run()結果:紅色 小汽車在跑b = Cat("白色")b.run()結果:貓咪 白色 在跑有時經過單一對象方便集中管理資源·單例模式是保證一個類僅有一個實例的設計模式·保證了在程序的不一樣位置均可以且僅能夠取到同一個對象實例:若是實例不存在,會建立一個實例;若是已存在就會返回這個實例。設計模式:處理特定問題,可重用解決方案建立單例模式:class Danli:    ins = None    def __new__(cls, *args, **kwargs):        if cls.ins == None:            cls.ins = object.__new__(cls)        return cls.ins    def __init__(self):        passclass Boy(Danli):    passclass Girl(Danli):    passxiaoming = Danli()print(id(xiaoming))結果:35486800xiaoHong = Danli()print(id(xiaoHong))結果:35486800工廠模式是不直接暴露對象建立細節,而是經過一個共用類建立對象的設計模式,須要4步:建立基類-建立子類-建立工廠類-使用工廠模式class Girl:    passclass Boy:    passclass Dog:    passclass Cat:    passclass Alex:    passclass Gongchang:    def re_Per(self,arg):        if arg == "G":            return Girl()        elif arg == "B":            return Boy()        print("沒有")
相關文章
相關標籤/搜索