电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python self用法詳解

瀏覽:54日期:2022-07-04 08:19:11

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

class Person: def __init__(self): print('正在執行構造方法') # 定義一個study()實例方法 def study(self): print(self,'正在學Python')zhangsan = Person()zhangsan.study()lisi = Person()lisi.study()

那么,self 到底扮演著什么樣的角色呢?接下來將對 self 參數做詳細的介紹。

事實上,Python 只是規定,無論是構造方法還是實例方法,最少要包含一個參數,并沒有規定該參數的具體名稱。之所以將其命名為 self,只是程序員之間約定俗成的一種習慣,遵守這個約定,可以使我們編寫的代碼具有更好的可讀性(大家一看到 self,就知道它的作用)。

那么,self 參數的具體作用是什么呢?打個比方,如果把類比作造房子的圖紙,那么類實例化后的對象是真正可以住的房子。根據一張圖紙(類),我們可以設計出成千上萬的房子(類對象),每個房子長相都是類似的(都有相同的類變量和類方法),但它們都有各自的主人,那么如何對它們進行區分呢?

當然是通過 self 參數,它就相當于每個房子的門鑰匙,可以保證每個房子的主人僅能進入自己的房子(每個類對象只能調用自己的類變量和類方法)。

如果你接觸過其他面向對象的編程語言(例如 C++),其實 Python 類方法中的 self 參數就相當于 C++ 中的 this 指針。

也就是說,同一個類可以產生多個對象,當某個對象調用類方法時,該對象會把自身的引用作為第一個參數自動傳給該方法,換句話說,Python 會自動綁定類方法的第一個參數指向調用該方法的對象。如此,Python解釋器就能知道到底要操作哪個對象的方法了。

因此,程序在調用實例方法和構造方法時,不需要手動為第一個參數傳值。例如,更改前面的 Person 類,如下所示:

class Person: def __init__(self): print('正在執行構造方法') # 定義一個study()實例方法 def study(self): print(self,'正在學Python')zhangsan = Person()zhangsan.study()lisi = Person()lisi.study()

上面代碼中,study() 中的 self 代表該方法的調用者,即誰調用該方法,那么 self 就代表誰。因此,該程序的運行結果為:

正在執行構造方法<__main__.Person object at 0x0000021ADD7D21D0> 正在學Python正在執行構造方法<__main__.Person object at 0x0000021ADD7D2E48> 正在學Python

另外,對于構造函數中的 self 參數,其代表的是當前正在初始化的類對象。舉個例子:

class Person: name = 'xxx' def __init__(self,name): self.name=name zhangsan = Person('zhangsan')print(zhangsan.name)lisi = Person('lisi')print(lisi.name)

運行結果為:

zhangsanlisi

可以看到,zhangsan 在進行初始化時,調用的構造函數中 self 代表的是 zhangsan;而 lisi 在進行初始化時,調用的構造函數中 self 代表的是 lisi。

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

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

運行結果為:

<__main__.Person object at 0x0000025C26F021D0><__main__.Person object at 0x0000025C26F021D0>

顯然,無論采用哪種方法,self 所表示的都是實際調用該方法的對象。

總之,無論是類中的構造函數還是普通的類方法,實際調用它們的誰,則第一個參數 self 就代表誰。

以上就是Python self用法詳解的詳細內容,更多關于Python self用法的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | 美甲贴片-指甲贴片-穿戴美甲-假指甲厂家--薇丝黛拉 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | TPU薄膜_TPU薄膜生产厂家_TPU热熔胶膜厂家定制_鑫亘环保科技(深圳)有限公司 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 恒温油槽-恒温水槽-低温恒温槽厂家-宁波科麦仪器有限公司 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 艺术漆十大品牌_艺术涂料加盟代理_蒙太奇艺术涂料厂家品牌|艺术漆|微水泥|硅藻泥|乳胶漆 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 北京包装设计_标志设计公司_包装设计公司-北京思逸品牌设计 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 电液推杆生产厂家|电动推杆|液压推杆-扬州唯升机械有限公司 | 盛源真空泵|空压机-浙江盛源空压机制造有限公司-【盛源官网】 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 驾驶式洗地机/扫地机_全自动洗地机_工业洗地机_荣事达工厂官网 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 深圳成考网-深圳成人高考报名网| 山东氧化铁红,山东铁红-淄博科瑞化工有限公司| 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 【北京写字楼出租_写字楼租赁_办公室出租网/出售】-远行地产官网 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 【连江县榕彩涂料有限公司】官方网站 |