实战IT培训机构_黄色激情网站_IT培训班选大学生IT技术培训中心_黄色激情视频网站_中公优就业

400-650-7353
您所在的位置:首頁 > IT干貨資料 > python > 【Python基礎知識】Python類的類屬性、實例方法和類方法

【Python基礎知識】Python類的類屬性、實例方法和類方法

  • 發布: python培訓
  • 來源:python干貨資料
  • 2021-02-09 15:44:34
  • 閱讀()
  • 分享
  • 手機端入口

1、類屬性

類屬性與實例屬性不同。一個類的所有實例的值都相同的屬性稱為類屬性。所有實例都共享類屬性的值。類屬性是在類級別定義的,而不是在構造方法__init__()方法內部定義的。與實例屬性不同,使用類的名稱訪問類屬性:

  1. >>> class Cat: 
  2. ...     name = 'Mimi' 
  3. ... 

上述Cat類包括一個名為name的類屬性,可以使用類名稱訪問該屬性:

  1. >>> Cat.name 
  2. 'Mimi' 

Cat類的每個實例都可以使用點表示法訪問該屬性:

  1. >>> mimi = Cat() 
  2. >>> miaomiao = Cat() 
  3. >>> mimi.name 
  4. 'Mimi' 
  5. >>> miaomiao.name   # mimi和miaomiao的name都為'Mimi' 
  6. 'Mimi' 

但是,改變某個實例的類屬性不會影響其他實例,它只會影響當前實例:

  1. >> class Cat: 
  2. ...     name = 'Mimi' 
  3. ... 
  4. >>> mimi = Cat() 
  5. >>> mimi.name 
  6. 'Mimi' 
  7. >>> mimi.name = 'MIMI'   # 將mimi的name屬性改為大寫 
  8. >>> mimi.name 
  9. 'MIMI' 
  10. >>> Cat.name   # Cat類的name屬性并沒有改變 
  11. 'Mimi' 
  12. >>> miaomiao = Cat()   # 新實例化一個實例 
  13. >>> miaomiao.name   # 新實例的name并沒有受到前一個實例影響 
  14. 'Mimi' 

2、實例方法

可以使用def關鍵字在類中定義任意數量的方法。方法的第一個參數通常為self,它用來引用和調用實例。在類中定義方法和定義普通的函數沒有太多區別。下面在Cat類中定義了一個名為eat的方法:

  1. >>> class Cat: 
  2. ...     def __init__(self, name, age): 
  3. ...         self.name = name 
  4. ...         self.age = age 
  5. ...     def eat(self): 
  6. ...         print('{1}歲的{0}正在進食'.format(self.name, self.age)) 
  7. ... 

可以使用實例調用類的實例方法:

  1. >>> mimi = Cat('Mimi'1
  2. >>> mimi.eat() 
  3. 1歲的Mimi正在進食 

【Python基礎知識】Python類的類屬性、實例方法和類方法

3、類方法

類方法是將類本身作為對象進行操作的方法,也就是說,類方法調用的是類變量和類方法。類方法的語法格式如下:

@classmethod

def 方法名(cls[,參數]):

方法體

類方法使用@classmethod裝飾,第一個參數為cls隱含參數,其余參數是可選的。下面給出兩個簡單的類方法的示例,第一個示例是創建只含有默認參數的類方法:

  1. @classmethod 
  2. def cfun(cls): 
  3.     print('成功進入類方法'

第二個示例是創建含有其余參數的類方法:

  1. @classmethod 
  2. def cfun(cls, name): 
  3.     cls.name = name 
  4. print('成功進入類方法'

調用類方法有兩種方式,一種是類外調用,采用“類名.方法名(參數)”的形式;另一種是類內調用,采用“cls.方法名(參數)”的形式:

  1. >>> class play_game(object): 
  2. ...     top_score = 100 
  3. ...     @classmethod 
  4. ...     def look_again(cls): 
  5. ...         print('再次查看最高分數:%d' % cls.top_score) 
  6. ...     @classmethod 
  7. ...     def look_socre(cls): 
  8. ...         print('最高分數:%d' % cls.top_score) 
  9. ...         cls.look_again()   # 類內調用 
  10. ... 
  11. >>> play_game.look_socre()   # 類外調用 
  12. 最高分數:100 
  13. 再次查看最高分數:100 

上述程序中,在類外采用“類名.方法名(參數)”的形式調用了類方法look_socre()。look_socre()類方法用@classmethod進行了裝飾,并且內部調用了類屬性top_score,打印最高分數;然后在類內采用“cls.方法名(參數)”的形式調用了另一個類方法look_again()。look_again()類方法的的功能是再次打印最高分數。因此,執行類調用代碼后,先執行look_socre()類方法中的打印語句,后執行look_again()類方法中的打印語句。

例如,創建一個學生類(Student),類屬性city的默認值為'北京';在類中創建一個類方法get_city(),該類方法的功能是打印類屬性。利用類方法set_city()修改城市,代碼如下:

  1. >>> class Student: 
  2. ...     city = '北京' 
  3. ...     @classmethod 
  4. ...     def get_city(cls): 
  5. ...         print('城市:'cls.city) 
  6. ...     @classmethod 
  7. ...     def set_city(cls, cty): 
  8. ...         cls.city = cty 
  9. ... 
  10. >>> Student.get_city() 
  11. 城市: 北京 
  12. >>> Student.set_city('上海'
  13. >>> Student.get_city() 
  14. 城市: 上海 

下面比較一下類方法與實例方法的相同點和不同點。

類方法與實例方法的相同點如下:

①都可以在類內調用。

②都可以通過實例調用。

類方法與實例方法的不同點如下:

①類方法第一個默認參數為cls;實例方法第一個默認參數為self。

②類方法可以通過類名直接調用。

③類方法內只能調用類屬性和類方法。

類方法的作用如下:

①方便類直接調用。

②可以修改類屬性和類方法。

③減少創建多個實例時所占用的內存空間,加快運行速度。

文章“【Python基礎知識】Python類的類屬性、實例方法和類方法”已幫助

>>本文地址:http://m.jecan.cn/zhuanye/2021/66400.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 蜜蜂职场文库_职场求职面试实用的范文资料大全 | 网站seo优化_seo云优化_搜索引擎seo_启新网络服务中心 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 棕刚玉_白刚玉_铝酸钙-锐石新材料 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 隆众资讯-首页_大宗商品资讯_价格走势_市场行情 | 臻知网大型互动问答社区-你的问题将在这里得到解答!-无锡据风网络科技有限公司 | 起好名字_取个好名字_好名网免费取好名在线打分 | 希望影视-高清影视vip热播电影电视剧免费在线抢先看 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 三佳互联一站式网站建设服务|网站开发|网站设计|网站搭建服务商 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 全自动包衣机-无菌分装隔离器-浙江迦南科技股份有限公司 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 合肥办公室装修 - 合肥工装公司 - 天思装饰 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 合肥钣金加工-安徽激光切割加工-机箱机柜加工厂家-合肥通快 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | HDPE储罐_厂家-山东九州阿丽贝防腐设备| 博医通医疗器械互联网供应链服务平台_博医通 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 上海办公室装修,办公楼装修设计,办公空间设计,企业展厅设计_写艺装饰公司 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 网站seo优化_seo云优化_搜索引擎seo_启新网络服务中心 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | 浙江富广阀门有限公司| 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 |