实战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://www.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

主站蜘蛛池模板: 高压分散机(高压细胞破碎仪)百科-北京天恩瀚拓| 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 海南在线 海南一家| 【灵硕展览集团】展台展会设计_展览会展台搭建_展览展示设计一站式服务公司 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 注塑_注塑加工_注塑模具_塑胶模具_注塑加工厂家_深圳环科 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 真空泵厂家_真空泵机组_水环泵_旋片泵_罗茨泵_耐腐蚀防爆_中德制泵 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 湖南自考_湖南自学考试网| 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 中药超微粉碎机(中药细胞级微粉碎)-百科| 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 |