python的self怎么理解,python類中self關鍵字用法

 2023-10-05 阅读 28 评论 0

摘要:python的類 菜鳥講解:類的基本概念 基本概念: 類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。 方法: 類中定義的函數。 類變量: 類變量在整個實例化的對象中是公用的。類變量定義在類中且

python的類

菜鳥講解:類的基本概念
基本概念:
類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。
方法: 類中定義的函數。
類變量: 類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數體之外。類變量通常不作為實例變量使用。
數據成員: 類變量或者實例變量用于處理類及其實例對象的相關的數據。
方法重寫: 如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
局部變量: 定義在方法中的變量,只作用于當前實例的類。
實例變量: 在類的聲明中,屬性是用變量來表示的,這種變量就稱為實例變量,實例變量就是一個用 self 修飾的變量。
繼承: 即一個派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。例如,有這樣一個設計:一個Dog類型的對象派生自Animal類,這是模擬"是一個(is-a)"關系(例圖,Dog是一個Animal)。
實例化: 創建一個類的實例,類的具體對象。
對象: 通過類定義的數據結構實例。對象包括兩個數據成員(類變量和實例變量)和方法。

self關鍵字如何用

1.在定義類的過程中,無論是顯式創建類的構造方法,還是向類中添加實例方法,都要求將 self 參數作為方法的第一個參數。例如,定義一個 Animal 類

class Animal:def __init__(self):print("正在執行構造方法")# 定義一個eat()實例方法def eat(self,name):print(name,"正在吃東西")

事實上,Python 只是規定,無論是構造方法還是實例方法,最少要包含一個參數,并沒有規定該參數的具體名稱。之所以將其命名為 self,只是程序員之間約定俗成的一種習慣,遵守這個約定,可以使我們編寫的代碼具有更好的可讀性(大家一看到 self,就知道它的作用)。他就好比C++中的this指針。也就是說,同一個類可以產生多個對象,當某個對象調用類方法時,該對象會把自身的引用作為第一個參數自動傳給該方法,換句話說,Python 會自動綁定類方法的第一個參數指向調用該方法的對象。如此,Python解釋器就能知道到底要操作哪個對象的方法了。

class Animal:def __init__(self):print("正在執行構造方法")# 定義一個eat()實例方法def eat(self):print(self,"正在吃東西")
cat = Animal()
cat.eat()
dog = Animal()
dog.eat()

python的self怎么理解,執行結果如下圖:
正在執行構造方法
<main.Animal object at 0x000001AA1F8C7D60> 正在吃東西
正在執行構造方法
<main.Animal object at 0x000001AA1F8C7D30> 正在吃東西

2.值得一提的是,除了類對象可以直接調用類方法,還有一種函數調用的方式,例如:

class Person:def who(self):print(self)
zhangsan = Person()
#第一種方式
zhangsan.who()
#第二種方式
who = zhangsan.who
who()#通過 who 變量調用zhangsan對象中的 who() 方法

也就是說,我們定義的類中的方法,都必須有一個默認的參數,指這個類對象。不會打印出來,并且,調用的時候括號里無需傳參(如果定義類方法時只有self一個參數的時候)。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/114431.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息