1. 程式人生 > >我對Python中面向物件的一些總結

我對Python中面向物件的一些總結

      回過頭來再看看關於面向物件的基礎知識,然後做個總結。也算是重新梳理一遍吧。首先,總的來說面向物件包含封裝、繼承、多型三個大特性。這部分內容主要總結的是封裝。

       我所理解的封裝其實就是打包起來,或者說是隱藏起來的意思,通過封裝將類和物件有機地統一起來,從而能夠利用類來描述一個事物。下面將總結一些關於類的基本操作。

(1)
類的定義格式
class 類名:
    #定義屬性
    def __init__(self,引數列表):
        self.屬性名1 = 數值1
        self.屬性名2 = 數值2
        ...
    #定義方法
    def 方法名1(self,引數列表):
        方法體
    def 方法名2(self,引數列表):
        方法體
    ....
例如
class Huoying:
#定義屬性
def __init__(self):
self.name = "二狗"
self.age = "21"
self.height = 180
#定義方法
   """
    這裡的self表示正在呼叫這個方法的物件
    """
def ability(self)
print("All powerful")
物件的建立和呼叫

"""

(2)

a.建立物件的格式:
    物件名 = 類名()
    
b.呼叫物件的屬性的格式
    物件名.屬性名
    
c.呼叫物件的方法的格式:
    物件名.方法名(實參列表)
    
    在呼叫方法時不需要給self形參傳值,它的值是直譯器自動傳遞過去的.
    如果在定義方法時,方法中除了self引數之外沒有其它引數,那麼在呼叫這個方法時,不需要傳實參列表
"""
#建立物件
NB = Huoying
#呼叫屬性
NB.name
NB.age
NB.height
上面這三行需要列印
#呼叫方法
MN.ability()
上面這行不需要列印


# 一個類可以建立多個物件,且在呼叫這些物件的屬性和方法時,是各不相干的
NB1 = Huoying
NB2 = Huoying


""" __init__方法的作用: 定義屬性,並初始化屬性(給屬性賦值)
    這個方法在什麼時候呼叫?
        在物件創建出來後直譯器會立即呼叫這個方法,給物件設定屬性,並初始化


    self的含義:
        self表示當前物件,剛剛創建出來的那個物件
"""

(3). 在定義屬性的時候有三種方式可選,如下:

a.在類的__init__方法裡面定義屬性,見上文(1)中
b.在類的外面呼叫的時候定義
class Student:


def __init__(self,name,age):
# 給Student類的所有物件設定這些屬性
self.name = name
self.age = age
# self.p_t = parent

s1 = Student("小明",20)
# 在類的外面給物件新增屬性,並賦值
s1.p_t = "大明"
print(s1.p_t)

# 修改屬性p_t的值
s1.p_t = "小明"

c.在類的方法裡面定義
class Student:

def __init__(self,name,age):
# 給Student類的所有物件設定這些屬性
self.name = name
self.age = age
# self.p_t = parent


def study(self,gender):
# 給物件新增一個屬性
self.gender = gender


s1 = Student("賢哥",23)
print(s1.name)
print(s1.age)

print(s1.gender)
s1.study("男")

在上述方法中,一般都只用法一,剩餘兩種不太常用。

(4). 關於私有屬性和私有方法

    我對私有屬性和方法的理解就是,既然是私有的那麼就不可以隨便使用,因此,比普通的屬性和方法的操作要更復雜一些。

a.私有屬性:在屬性前面加__,只能在內部呼叫
b.私有方法:在方法前面加__,只能在內部使用
如果想在類外給私有屬性賦值,則需要定義set和get方法,示例如下
class Person:
def __init__(self,name,age):
# 把age設定成私有的,屬性名變成了__age
# 私有屬性只能在類的裡面訪問,不允許在類的外面訪問
self.__age = age
self.name = name

"""
在類的裡面新增一個方法:set_xxx(self,xxx)
在類的外面通過物件呼叫這個方法,給私有屬性___age賦值
"""
def set_age(self,age):
if age <= 150 and age >= 0:
# 給私有屬性__age賦值
self.__age = age
else:
print("年齡不合法,賦值失敗!!!")
"""
在類的裡面新增一個方法:get_xxx(self)
在類的外面可以通過物件呼叫這個方法,獲得私有屬性__age的值
"""
def get_age(self):
# 返回私有屬性__age的值

return self.__age

      列印私有屬性和私有方法:

p1.set_age(1000)
age = p1.get_age()

print(age)

(5). 四個魔法方法

a.__new__:使用該方法建立物件,具體是通過呼叫父類的new方法傳進物件並返回
 

示例一:

class Person:

    """
    這個方法是用來建立物件的
    """
    def __new__(cls,name,age):
        # 呼叫父類的new方法建立物件,並返回
        return object.__new__(cls)

b.__init__:該方法是用來給物件設定屬性的,設定屬性並且初始化屬性,在呼叫該方法之前物件已經創建出來了

    """
    這個方法:
        1.設定屬性
        2.初始化屬性
        3.這個方法被呼叫之前,物件已經被創建出來了

"""

def __init__(self,name,age):
# 把age設定成私有的,屬性名變成了__age
# 私有屬性只能在類的裡面訪問,不允許在類的外面訪問
self.__age = age
self.name = name

c.__str__:該方法是用來轉換型別的,轉換成字串型別,,,也可以在列印物件之前呼叫該方法得到一些返回值
如果不定義該方法,在列印物件時,得到的是物件的地址,定義之後,打印出來的是相應的返回值

"""
如果沒有先呼叫str方法,則返回一個地址
但是列印物件時,如果先呼叫物件的str方法得到一個返回值,則列印返回值而不是地址
"""
s1 = Student("四哥",23)
# 當呼叫str(s1)時,直譯器會自動呼叫__str__方法,並返回結果
str_s1 = str(s1)
print(str_s1)

d.__del__:該方法並不是用來刪除物件的,是在物件被刪除之前列印一些說明的

def __del__(self):
"""
這個方法不是用來刪除物件的,沒有刪除物件的功能
直譯器會在物件即將被刪除時,自動呼叫這個方法
通常在這個方法中做臨終遺言
"""

print(self.name+"即將被刪除...")

能力有限,請多多指教。

相關推薦

Python面向物件一些總結

      回過頭來再看看關於面向物件的基礎知識,然後做個總結。也算是重新梳理一遍吧。首先,總的來說面向物件包含封裝、繼承、多型三個大特性。這部分內容主要總結的是封裝。        我所理解的封裝其實就是打包起來,或者說是隱藏起來的意思,通過封裝將類和物件有機地統一起來,

談談php面向物件的理解

轉載自:http://www.php.cn/php-weizijiaocheng-372376.html今天來和大家介紹一下PHP的面向物件。說到面向物件,我不得不提一下面向過程,因為本人在初學時,常常分不清楚面向物件和麵向過程,面向物件程式設計(OOP)是我們程式設計的一項基本技能,PHP5對OOP提供了良

總結Python面向物件的特殊方法

當你從萌新小白到有點程式設計概念的時候或許就會有疑問,為什麼print()就可以打印出東西,為什麼生成器就可以next()進行迭代,這些都是因為類本身實現了一些特殊方法,我們來總結一下: 1.如果把一個類的例項變成str,就需要實現特殊方法__str__( ): str:用於顯示給使用者 r

Python面向物件的概念

1、語言的分類 1)面向機器 抽象成機器指令,機器容易理解。代表:組合語言。 2)面向過程 做一件事,排除步驟,第一步做什麼,第二步做什麼,如果出現A問題,做什麼處理,出現b問題,做什麼處理。問題規模小,步驟化,按部就班處理。  代表:c語言。 (按照步驟進行處理的。) 面向物件和麵向過

python面向物件三大特徵

面向物件三大特徵    1.封裝:根據職責將屬性和方法封裝到一個抽象的類中    2.繼承:實現程式碼的重用,相同的程式碼不需要重複的寫    3.多型:以封裝和繼承為前提,不同的子類物件呼叫相同的方法,產生不同的執行結果 一、封裝 什麼是封裝: 1.封裝是面向物件程式

python面向物件元類的自定義用法

面向物件中的常用方法 1.instance 和 issubclass instance :判斷兩個物件是不是一類 issubclass :判斷某個類是不是另一個類的子類 #兩個常用方法的使用 class Person: pass ​ class Student(Person):

Agilescrum的一些看法

這已經是第4個sprint了,可是我發現很多人對於Agile還是不太懂,而且最可悲的是scrum master,著實令我覺得很失望。我發現他們中的好多人都只是用了一個形式,比如scrum裡面要求有plan meetin

關於Python面向物件的理解

1、什麼是面向物件 面向物件的程式設計的核心是物件(上帝式思維),要理解物件是什麼,就要把自己當成上帝,上帝眼裡世間存在的萬物皆物件,不存在的也可以創造出來。物件是特徵和技能的結合,其中特徵和技能分別對應物件的資料屬性和方法屬性。 2、優缺點 優點是: 便於維護,複用性強,具有很

java面向物件思想的理解

        java是一門純粹的面向物件的語言。面向物件這種程式設計模式它將現實世界中的一切事物都看作是物件,例如,一個人是一個物件,汽車、飛機、小鳥等等,都是物件;它強調從物件出發,以物件為中心用人類的思維方式來認識和思考問題。每個物件都具有各自的狀態特徵(也可以稱為

python 面向物件的封裝

面向物件_封裝 面向物件的核心: 類和物件     類:型別,資料型別 從物件中抽取出來的一個抽象概念     定義某種型別的特徵和行為操作     物件:通過某個指定的類創建出來的具體屬性和具體行為的實體     一個類可以建立多個物件,多個物件可以屬於一個型別 類操作語法

關於python字典的一些總結

1、 獲取字典中的值,但是無異常 當在字典中取值的時候,可以使用如下兩種方式: >>> d = {'name':'kel'} >>> d {'name': 'kel'} >>> d['name'] 'kel' >&

簡單談談Java Class.forName()、Class.class、例項物件.getClass() 三種獲取位元組碼物件的理解?(內含程式碼分析和總結)

首先得明白的知識點: 1靜態屬性初始化載入類的時候初始化( 只會初始化一次),而非靜態屬性的初始化就是new類例項物件的時候初始化的 2三種獲取位元組碼物件的共同點就是都會預先的判斷記憶體是否已經載入此類,弱沒有載入,則會把.class檔案裝入到記憶體,若是載入了,則會根據class檔案生成例

javascript面向物件物件,屬性,原型鏈和一些擴充套件知識總結

面向物件和麵向物件程式設計 面向物件 就是找個工具,幫我完成一項工作,物件就像一個工具一樣,每個工具都可以幫我們實現某個功能,比如汽車可以實現運輸,我們只需要學會如何去開動汽車,而不需要知道汽車

深入理解python(一)python語法總結:基礎知識和python物件的理解

用python也用了兩年了,趁這次疫情想好好整理下。 大概想法是先對python一些知識點進行總結,之後就是根據python核心原始碼來對python的實現方式進行學習,不會閱讀整個原始碼,,,但是應該會把資料結構的實現、函式呼叫過程、以及python虛擬機器的基本原理根據原始碼解釋下。 當然限於筆者只是一個

Python面向象的編程

python中面向對象的編程Python面向對象的編程1概述(1)面向對象編程 面向對象的編程是利用“類”和“對象”來創建各種模型來實現對真實世界的描述,使用面向對象編程的原因一方面是因為它可以使程序的維護和擴展變得更簡單,並且可以大大提高程序開發效率,另外,基於面向對象的程序可以使它人更加容易理解你的代碼

python 面向象的概念

sim 分支 display ica 3.0 輸出 全局 record 就會 原文 域和作用空間 本地域,函數域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "l

Python面向向介紹及類的屬性和方法

1.面向物件介紹 類和物件:是面向物件中兩個重要概念 類:是物件對事物的抽象,比如人類\球類 物件:是類的一個例項,比如足球\籃球 例項說明: 球類可以對球的特徵和行為進行抽象,然後可以例項化一個真實的球體出來 為什麼面向物件? 面向物件的主要思想是 封裝

純程式碼實用教材,python面向物件思維與類的一些方法!

面向物件(Object Oriented,OO)是軟體開發方法。面向物件的概念和應用已超越了程式設計和軟體開發,擴充套件到如資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網路管理結構、CAD技術、人工智慧等領域。面向物件是一種對現實世界理解和抽象的方法,是計算機程式設計技術發展到一定階

Java面向物件三大特徵總結

JAVA中面向物件的三大特徵:         面向物件具有繼承性(Inheritance)         面向物件具有多型性(Polymorphism)         面向物件具有封裝性(Encapsulation) 一、繼承          多個類具有共同的屬性(

乾貨大派送——Python面向物件思維與類的一些方法!

有基礎或者是學過其他程式設計的小夥伴,想必對面向物件(Object Oriented,OO)一定不陌生。面向物件(Object Oriented,OO)是軟體開發的方法。它是一種對現實世界理解和抽象的方法。面向物件的概念和應用包含了程式設計、軟體開發、資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網