網站首頁 編程語言 正文
假設有一個類nameMain(), 如最下面代碼
- 類 : 一個抽象的模板。可以理解為抽象設計圖
- 類名:類的名字。
查看/實現方式 :print(nameMain)或者print(self.class) - 類的實例:即類創建的對象,類每創建一個實例就開辟新的內存地址指向這個創建的實例。抽象設計圖具體實現的東西
查看/實現方式 : a=nameMain(帶參/無參) - self : 表示類創建的實例/對象本身,指向當前創建對象的內存地址。在__init__魔方方法中創建
類可以創建很多不同的實例,這些實例又有自己特定的特征,如何很好的調用和匹配好 所創建的實例對象 及其特征 就需要self。
理解:
例如 :類中創建了對象a和對象b, self對象就是a和b對象的抽象的統稱,關于對象a和對象b的特征,可以用self來調用,當self指向a時就指向a的內存地址,可以調用a的特征;同理self指向對象b就指向b的內存地址,就可以調用b的特征。
比如 : 可以把 對象a 和 對象b 理解成 客戶a 和 客戶b, 類理解為某個房子。這時候客戶a和客戶b都買了同一個設計圖出的房子,但是他們想要自己的裝修風格,這些裝修風格就是對象a、對象b的特征。當裝修隊開始裝修房子時,先選擇具體客戶,然后根據客戶要求裝修;而先服務哪個客戶呢?客戶就選擇self客戶管理工具指向的現在的客戶,同時self還可以調用對象的特征,這時候根據self指示的客戶和self調用客戶要求的裝修風格來裝修房子。
- 客戶a=類的對象a;
- (客戶要求的)裝修風格=對象a/b的特征;
- 房型=類 裝修隊=代碼的執行
具體代碼:
""" self的理解 :
1, self表示類的實例 或 對象, 指向當前對象的內存地址 (self不指向類本身,而是類創建的實例/對象)
2, 類中定義的函數的self 與 init中self的內存地址 + 創建實例的內存地址 保持一致(都指向同一個內存地址)
3, self.__class__ 用來查看當前類名,相當于print(nameMain)
"""
class nameMain(object):
def __init__(self, name, age):
print("init中的self={}".format(self))
print("self.__class__用于查看當前類名 : ", self.__class__)
self.name = name
self.age = age
def printStu(self):
print("def中的self={}".format(self))
return "name={}, age={}".format(self.name, self.age)
if __name__ == "__main__":
a = nameMain("immuable", 18)
print("a = {}".format(a)) # self 打印地址=對象a的地址
print(a.printStu())
print()
b=nameMain("muable", 100) # self 打印地址=對象b的地址
print("b = {}".format(b))
print(b.printStu())
輸出
# 對象a
init中的self=<__main__.nameMain object at 0x0000022E78A2F8D0>
self.__class__用于查看當前類名 : ?<class '__main__.nameMain'>
a = <__main__.nameMain object at 0x0000022E78A2F8D0>
def中的self=<__main__.nameMain object at 0x0000022E78A2F8D0>
name=immuable, age=18
#對象b
init中的self=<__main__.nameMain object at 0x0000022E78A2F828>
self.__class__用于查看當前類名 : ?<class '__main__.nameMain'>
b = <__main__.nameMain object at 0x0000022E78A2F828>
def中的self=<__main__.nameMain object at 0x0000022E78A2F828>
name=muable, age=100
self的值是什么?
self的值是Python會自動賦值的,而且值是對象本身。舉例說明:類Dog,他的實例是d,那么,d調用類的方法jian(arge1,arge2)的時候,Python會自動轉為Dog.jian(d,arge1,arge2)。self的值是Dog的實例d。
以下例子,打印self的值。(打印結果中的intance是實例的意思)
總結
原文鏈接:https://blog.csdn.net/weixin_46220517/article/details/124792255
相關推薦
- 2022-09-18 Golang實現文件傳輸功能_Golang
- 2022-04-16 一起來看看C語言線性表的線性鏈表_C 語言
- 2022-09-13 conda虛擬環境默認路徑的修改方法_python
- 2022-06-24 python學習之讀取配置文件_python
- 2022-08-18 python數據可視化pygal模擬擲骰子實現示例_python
- 2022-09-10 詳解Python腳本如何設置試用期_python
- 2022-06-01 AndriodStudio利用ListView和數據庫實現簡單學生管理_Android
- 2022-04-25 ASP.NET?Core?Web資源打包與壓縮技術介紹_實用技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支