本篇文章為大家帶來了關於python的相關知識,其中主要介紹了關於物件導向的相關內容,物件導向的四個特徵包括抽象、封裝、繼承和多態,下面一起來看一下,希望對大家有幫助。
推薦學習:python影片教學
1.抽象
抽像是隱藏多餘細節的藝術。在物件導向的概念中,抽象的直接表現形式通常為類別。 Python基本上提供了物件導向程式語言的所有元素,如果你已經至少掌握了一門物件導向語言,那麼利用Python進行物件導向程式設計將會相當容易。
忽略主題中與當前目標無關的東西,專注的注意與當前目標有關的方面.( 就是把現實世界中的某一類東西, 提取出來, 用程式碼表示, 抽像出來的一般叫做類別或介面).
抽象並不打算了解全部問題, 而是選擇其中的一部分,暫時不用部分細節.抽象包括兩個面向,一個資料抽象,二是過程抽象.
資料抽象-->表示世界中一類事物的特徵,就是物件的屬性.例如鳥有翅膀,羽毛等(類別的屬性)
過程抽象-->表示世界中一類事物的行為,就是物件的行為.如鳥會飛,會叫(類別的方法)
2.封裝
物件導向的程式設計中,某個類別把所需的資料(也可以說是類別的屬性)和資料的運算(也可以說是類別的行為)全部都封裝在類別中,分別稱為類別的成員變數和方法(或成員函數)。這種把成員變數和成員函數封裝在一起的程式設計特性稱為封裝。
2.1公有成員變數和私有成員變數
Python中用成員變數的名字來區分是公有成員變數或是私有成員變數。
Python中,以兩個底線‘_ _’開頭的變數都是私有成員變量,而其餘的變數都屬於公有成員變數。
其中,私有的成員變數只能在類別的內部訪問,而共有的公有的成員變數可以在類別的外部進行存取。
2.2公有方法與私有方法
#類別的方法是類別行為的封裝。
類別的方法也分為公有方法和私有方法。
類別的私有方法只能透過物件名稱(在類別內部也就是self)在類別的內部進行存取。而公有方法可以在類別的外部透過物件名稱進行存取。同樣,公有的成員方法和私有的成員方法也是透過名字來區分的,雙底線‘__’開頭的方法是私有成員方法。
私有方法:只能在類別的內部進行訪問,物件無法存取。
私有屬性: 提高程式碼安全性,不允許別人隨意修改
class Test(object): #私有方法 def __test2(self): print("私有方法,__test2") #普通方法 def test(self): print("普通方法test") #普通方法 def _test1(self): print("普通方法_test1方法") #在类内部调用私有方法 #t.__test2() self.__test2() t = Test() t.test() t._test1() #t.__test2() #调用时会报错
##私有方法應用程式場景--發送簡訊
#私有方法应用场景--发短信 class Test: #核心私有方法,用于发送短信 def __sendMsg(self): print("---正在发送短信---") #公共方法 def sendMsg(self,newMoney): if newMoney>10000: #余额大于10000才可以调用发短信功能 self.__sendMsg() else: print("抱歉,余额不足,请先充值!") t = Test() t.sendMsg(1000000000)
#帐号不允许更改 class Person(object): def __init__(self,name,sex): self.__name = name self.__sex = sex def getSex(self): return self.__sex def getName(self): return self.__name def setName(self,newName): if len(newName)>=5: self.__name = newName else: print("名字长度必须大于等于才可修改!") xiaoming = Person("hoongfu","男") print(xiaoming.getName()) print(xiaoming.getSex()) xiaoming.setName("xiaoming") print(xiaoming.getName())
#2.2.1 練習
定義一個類別Person,類別中有私有方法和普通方法,私有屬性和普通屬性
能透過普通方法呼叫私有方法,也能透過普通方法更改私有屬性。
class Test(object): def test(self): self.__sex = "保密" print("普通公有方法test") #调用私有方法 self.__test1() def __test1(self): print("私有方法__test1") #调用私有属性 print("私有属性__sex:",self.__sex) t = Test() t.test()
3. 繼承
#3.1繼承的概念
在程式中,繼承描述的是事物之間的所屬關係,例如貓和狗都屬於動物,程序中便可以描述為貓和狗繼承自動物;同理,波斯貓和巴厘貓都繼承自貓,而沙皮狗和斑點狗都繼承狗
#繼承
#继承 class Animal(object): def eat(self): print("----吃----") def dirk(self): print("----喝----") def run(self): print("----跑----") def sleep(self): print("----睡觉----") class Dog(Animal): ''' def eat(self): print("----吃----") def dirk(self): print("----喝----") def run(self): print("----跑----") def sleep(self): print("----睡觉----") ''' def call(self): print("旺旺叫...") class Cat(Animal): def catch(self): print("抓老鼠....") dog = Dog() dog.call() dog.eat() tom = Cat() tom.catch() tom.sleep()
# #多重繼承
#
#多继承 class Animal(object): def eat(self): print("----吃----") def dirk(self): print("----喝----") def run(self): print("----跑----") def sleep(self): print("----睡觉----") class Dog(Animal): def call(self): print("旺旺叫...") class XiaoTq(Dog): def fly(self): print("----飞喽-------") xtq = XiaoTq() xtq.fly() xtq.call() xtq.eat()
class Cat(object): def __init__(self,name,color="白色"): self.name = name self.color = color def run(self): print("%s -- 在跑"%self.name) class Bosi(Cat): def setName(self,newName): self.name = newName def eat(self): print("%s -- 在吃"%self.name) bs = Bosi("印度猫") print(bs.name) print(bs.color) bs.eat() bs.setName("波斯猫") bs.run()
3.2重写父类方法与调用父类方法
所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法.
使用super调用父类的方法:可以直接调用父类方法,不需要通过 父类名.父类方法名 的方式
class Cat(object): def sayHello(self,name): print("hello---1") class Bosi(Cat): def sayHello(self): print("hello---2") #Cat.sayHello(self) super().sayHello("Zhangsan") bs = Bosi() bs.sayHello()
3.3多继承
多继承举例:
class Base(object): def test(self): print("----Base-----") class A(Base): def test(self): print("----test1-----") class B(Base): def test(self): print("----test2-----") class C(A,B): pass c = C() c.test() print(C.__mro__) #可以查看C类的搜索方法时的先后顺序
4.多态
4.1多态的定义
所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态。
多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。
当子类和父类都存在相同的print_self()方法时,我们说,子类的print_self()覆盖了父类的print_self(),在代码运行的时候,总是会调用子类的print_self()。这样,我们就获得了继承的另一个好处: 多态。
class Dog(object): def printSelf(self): print("大家好,我是xxx,请大家多多关照!") class XiaoTq(Dog): def printSelf(self): print("Hello,ereybody,我是你们的老大,我是哮天神犬!") #定义一个执行函数 def exec(obj): """ #定义时的类型并不知道要调用哪个类的方法, 当运行时才能确定调用哪个类的方法,这种情况,我们就叫做多态 """ obj.printSelf() dog = Dog() exec(dog) xtq = XiaoTq() exec(xtq)
4.2新式类和经典类的区别
新式类都从 object 继承,经典类不需要
Python 2.x中默认都是经典类,只有显式继承了object
Python 3.x中默认都是新式类,经典类被移除,不必显式的继承object
#新式类和经典类的区别 class A: def __init__(self): print('a') class B(A): def __init__(self): A().__init__() print('b') b = B() print(type(b))
class A(): def __init__(self): pass def save(self): print("This is from A") class B(A): def __init__(self): pass class C(A): def __init__(self): pass def save(self): print("This is from C") class D(B,C): def __init__(self): pass fun = D() fun.save()
推荐学习:python视频教程
以上是實例詳解Python物件導向的四大特徵的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。

在兩小時內高效學習Python的方法包括:1.回顧基礎知識,確保熟悉Python的安裝和基本語法;2.理解Python的核心概念,如變量、列表、函數等;3.通過使用示例掌握基本和高級用法;4.學習常見錯誤與調試技巧;5.應用性能優化與最佳實踐,如使用列表推導式和遵循PEP8風格指南。

Python適合初學者和數據科學,C 適用於系統編程和遊戲開發。 1.Python簡潔易用,適用於數據科學和Web開發。 2.C 提供高性能和控制力,適用於遊戲開發和系統編程。選擇應基於項目需求和個人興趣。

Python更適合數據科學和快速開發,C 更適合高性能和系統編程。 1.Python語法簡潔,易於學習,適用於數據處理和科學計算。 2.C 語法複雜,但性能優越,常用於遊戲開發和系統編程。

每天投入兩小時學習Python是可行的。 1.學習新知識:用一小時學習新概念,如列表和字典。 2.實踐和練習:用一小時進行編程練習,如編寫小程序。通過合理規劃和堅持不懈,你可以在短時間內掌握Python的核心概念。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。