python(15):面向對象<1>:類的三大特徵

2021-12-29 菜鳥練Python

收錄於話題 #python 17個

一、了解什麼是類1.定義一個簡單的類

在Python中,類通過 class 關鍵字定義,類名通用習慣為首字母大寫,Python3中類基本都會繼承於object類,語法格式如下,我們創建一個Circle圓類:

注意:我們定義的類都會默認繼承object類,當然也可以不繼承object類;兩者區別不大,但沒有繼承於object類使用多繼承時可能會出現問題。

有了Circle類的定義,就可以創建出具體的circle1、circle2等實例,circle1和circle2是個實際的圓。創建實例使用 類名+(),類似函數調用的形式創建。

如下我們創建兩個Circle類的實例:

circle1= Circle()circle2= Circle()

創建好實例對象後,我們就可以使用類中定義的所有方法。

2.self變量

哪個對象調用方法或者屬性,self就是那個值

class Human():    def eat(self):        print('人吃飯', id(self))
def sleep(self): print('人要睡覺', id(self))

zs = Human()zs.eat()zs.sleep()print(id(zs))
ls = Human()ls.eat()ls.sleep()print(id(ls))

3.__init__()方法

此方法是個內置方法,在創建對象的時候自動執行,同樣我們可以對此方法進行一些初始化操作

class Student:    def __init__(self, name, age, sex='男'):        self.name = name        self.age = age        self.sex = sex
def show(self): print('姓名:', self.name, '年齡:', self.age, '性別:', self.sex)

zs = Student('張三', 12, '男')ls = Student('李四', 43)zs.show()ls.show()

__init__()雖然可以初始化屬性,但是別的地方也可以更改屬性

class Person():    def __init__(self, name):        self.name = name
def haha(self, age): self.age = age
def xixi(self): print(self.name, self.age)
zs = Person('張三')zs.haha(15) zs.xixi()

ls=Person('李四')ls.age=45ls.xixi()

二、面向對象的三大特徵:封裝,繼承,多態1.封裝

舉例:

class Girl:    def __init__(self,name,age):        self.name=name        self.__age=age    def show(self):        print(self.name,self.__age)g=Girl('張三',10)g.show()print(g.age) g.__age=15print(g.__age)

我們可以使用dict方法查看所有a屬性的元素

print(g.__dict__)# {'name': '張三', '_Girl__age': 10, '__age': 15}

但是如果非想改,可以使用_類名__屬性名修改,但是不建議使用

2.繼承2.1 單繼承
class Animal:    def __init__(self, name, age):        self.name = name        self.age = age
def eat(self): print('吃')
def sleep(self): print('睡')
class Cat(Animal): def jiao(self): print('喵')
class Dog(Animal): def jiao(self): print('汪')
c = Cat('貓', 10)d = Dog('狗', 12)c.eat()d.eat()

2.2 多繼承

多繼承如果父類們擁有共同的方法則按照第一個順序進行繼承

class A: def shuchu(self):     print('A')
class B(): def shuchu(self): print('B')
class C(A,B): def shuchu3(self): print('C')
c = C()c.shuchu()

子類繼承父類,如果子類不重寫父類的某個方法,那么子類執行父類的方法

子類繼承父類,如果子類複寫了某個方法,那么子類只使用自己的方法

父類的私有屬性不能被繼承

3.多態

python是弱類型語言,python中處處是多態;python中沒有多態,但是有鴨子類型 ()一些類含有相同的方法,則這些類就互稱為鴨子

class Alipay():    def pay(self):        print('支付寶支付')class Wechatpay():    def pay(self):        print('微信支付')class Person():    def xiaofei(self,a):        a.pay()ali=Alipay()wx=Wechatpay()p=Person()p.xiaofei(wx)p.xiaofei(ali)

相關焦點

  • python面向對象三大特徵
    大概所有變成初學者初學者最頭疼的第一道坎就是面向對象的理解封裝從封裝本身去理解 就是把小貓小狗用袋子裝起來,然後把袋子的小口封上私有化方法:方法的私有化可以保護好一些核心的代碼,可以添加條件,是別人不能不滿足條件的更改,進行代碼的保護,python
  • python 對象和類(基本定義)
    面向對象Python從設計之初就已經是一門面向對象的語言,正因為如此,在Python中創建一個類和對象是很容易的
  • 【AICAMP —— Python】入門系列!(6. 面向對象)
    如果沒有對象?那可以考慮找個對象了!面向對象在介紹面向對象之前,需要理解面向過程,現在如實現一個1+1=2這樣的算術運算就會很容易,這是一個基本運算。缺點是:可控性差,無法向面向過程的程序設計流水線式的可以很精準的預測問題的處理流程與結果,面向對象的程序一旦開始就由對象之間的交互解決問題。在python中面向對象的程序設計並不是全部。面向對象編程可以使程序的維護和擴展變得更簡單,並且可以大大提高程序開發效率 ,另外,基於面向對象的程序可以使它人更加容易理解你的代碼邏輯,從而使團隊開發變得更從容。
  • Python中類和類的實例化、私有屬性面,以及面向對象的三大屬性
    人生苦短,我用Python1.類的定義(__init__方法,基類,self)類的定義:class ClassName(object):,object是父類名,object是一切類的基類。__init__方法是函數寫在類中就是方法,實例化對象的時候必須調用__init__方法。類的定義2.類的屬性屬性的本質就是變量。
  • Python入門基礎之面向對象二:類和實例、方法
    前面一篇文章我介紹了python面向對象的基本知識,連結在最下面。初步解釋了面向對象和面向對象的優點,今天就開始正式用代碼來展現面向對象。1、利用class創建類Python中,創建類的語句是如下所示先解釋一下,class後面跟的是類名,括號裡面是基類(也成為父類)python3中默認繼承object。
  • opencv-python獲取圖像:面向對象與面向過程
    下面是分別用面向過程與面向對象的編程方法實現讀取本地圖像和打開攝像頭兩段代碼:# -*- coding: utf-8 -*-"""面向過程的編程方法,用函數把解決問題的步驟一步一步實現。運行環境:win10系統 python==3.6 opencv-contrib-python== 4.1.0第一行「# -*- coding: utf-8 -*-」 告訴Python解釋器,按照UTF-8編碼讀取原始碼"""import
  • Python零基礎入門教程,面向對象有哪三大特性?
    大綱(面向對象的三大特性)封裝性繼承性多態性封裝性封裝隱藏了對象的屬性和方法內部實現細節,僅對外提供公共訪問方式,類的內部可以訪問,外部不可以訪問。外部訪問私有變量或者私有方法報錯繼承性現實生活中狗與動物之間的關係,狗具有動物的全部特徵和行為,在面向對象中動物被稱為「父類」,狗被稱為「子類
  • 全面深入理解 Python 類與對象
    magic.name)返回結果:浪子浪子三大方法python類的調用有三大方法,分別是類方法,靜態方法,實例方法。Python面向對象編程這裡就不多做代碼重寫,去原連結查看學習即可。數據封裝與私有屬性私有屬性,也叫私有方法,是以雙下劃線開頭的命名變量。無法通過實例方法和子類來調用的,只能通過類中寫的方法來調用。
  • 如何理解python中的類和對象?
    什麼是類和對象類和對象,在我們的生活中其實是很容易找例子的。類是一種把對象分組歸類的方法。比如動物,植物就可以看作是類,而大象,獅子就可以看作一個動物類中的對象;花,草可以看作是植物類中的對象。為什麼大象和獅子就劃分為動物類,花和草就劃分為植物類呢?
  • Python黑帽編程2.9 面向對象編程
    從機器的角度理解世界,還是純數學的方式理解世界,都不能代表人的視角和思維方式。在二者相向發展中,有了很多交匯。計算機當然離理解人的思維方式還差的很遠,除非把人變成計算單元。科學家們在這個方向上努力良久,在程式語言領域「面向對象」的思想和方法被廣泛接受。事物是不斷變化的,人類在變化中尋找相對靜止的時空來思考世界,來描述世界,文字、繪畫都是語言,都需要在靜止中呈現。
  • 從零入門量化交易系列-python的面向對象
    1、面向對象基礎概念類(Class): 用來描述具有相同屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。
  • 面向對象基礎 - Class使用及三大特性
    面向過程與面向對象的區別面向過程 Procedural programming在實際生活中,當我們遇到一個問題需要解決時,我們會進行一系列的工作來解決問題.面向對象 Object-oriented programming在面向過程編程中,解決不同的問題.過程也就不一樣,當有兩個比較類似的問題時,例如土豆炒肉絲和幹扁四季豆這兩道菜的做法的步驟雖然不一樣,一個直接炒,四季豆需要先煮一下.但是還是有部分的步驟是一樣的,雖然順序不一樣.
  • python面向對象,小白從零開始,python基礎入門,你會了嗎?
    Python,是一種面向對象的解釋型電腦程式設計語言,以簡單、易學、速度快等優點,是大部分想進入IT行業的從業人的選擇。IEEE發布2017年程式語言排行榜:Python超過JAVA程式語言排名第一。所以Python非常熱門的程式語言!
  • 從0開始學python第8.1節-類和對象
    什麼是面向對象之前我們學習了函數,通過函數將一些特定的邏輯封裝起來。這種將代碼組織起來的方式也叫過程式編程。我們今天學習的面向對象編程則將程序做了更高維度的封裝,用人類更容易理解的方式編程。類&實例中國道德經有一句話:道生一,一生二,二生三,三生萬物,講的是世間的萬物都是從特定的模板裡生出來的。
  • Python學習---- 面向對象類之進階
    Province('HeBei',10000)14# 獲取 對象obj1 的成員15print (obj1.如果按照一切事物都是對象的理論:obj對象是通過執行Foo類的構造方法創建,那麼Foo類對象應該也是通過執行某個類的 構造方法 創建。
  • Python 面向對象(初級篇)
    創建類和對象面向對象編程是一種編程方式,此編程方式的落地需要使用 「類」 和 「對象」 來實現,所以,面向對象編程其實就是對 「類」 和 「對象」 的使用。class是關鍵字,表示類創建對象,類名稱後加括號即可ps:類中的函數第一個參數必須是self(詳細見:類的三大特性之封裝)   類中定義的函數叫做 「方法」# 創建類class Foo:         def Bar(self):        print
  • 【Python核心編程筆記】一、Python中一切皆對象
    Python中一切皆對象本文首先對比靜態語言以及動態語言,然後介紹 python 中最底層也是面向對象最重要的幾個概念-object、type和
  • 來一點Python面向對象第一級進階的東西
    (isinstance(sb, Foo)) # 判斷sb是否是Foo的對象sc = Clss('ak')print(isinstance(sc, Foo)) # 判斷sc是否是Foo的對象# 返回值# True# False# issubclass(sub, super)檢查sub類是否是super的派生類classFoo:def __init__(self):passclass
  • Python類的概念、定義、屬性、繼承
    1.面向對象(Object Oriented,OO)概念面向對象,是我們編程的一種思維。早期的計算機編程是基於面向過程的方法,例如實現算術運算1+1+2 = 4,通過設計一個算法就可以解決當時的問題。隨著計算機技術的不斷提高,計算機被用於解決越來越複雜的問題。通過面向對象的方式,將現實世界的事物抽象成對象,現實世界中的關係抽象成類、繼承。
  • Python面向對象程式語言
    Python (發音:[ 'paiθ(ə)n; (US) 'paiθɔn ]n.蟒蛇,巨蛇 ),是一種面向對象的解釋性的電腦程式設計語言一個用編譯性語言比如C或C++寫的程序可以從源文件(即 C或C++語言)轉換到一個你的計算機使用的語言(二進位代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。當你運行你的程序的時候,連接/ 轉載器軟體把你的程序從硬碟複製到內存中並且運行。而Python語言寫的程序不需要編譯成二進位代碼。你可以直接從原始碼 運行 程序。