Python面向?qū)ο蟪绦蛟O(shè)計類變量與成員變量、類方法與成員方法用法分析
本文實例講述了Python面向?qū)ο蟪绦蛟O(shè)計類變量與成員變量、類方法與成員方法用法。分享給大家供大家參考,具體如下:
類變量與成員變量
在類中聲明的變量我們稱之為類變量[靜態(tài)成員變量],
在init()
函數(shù)中聲明的變量并且綁定在實例上的變量我們稱之為成員變量。
類變量直接可以通過類名來調(diào)用。
1、若類變量與成員同時存在并且同名
使用對象來調(diào)用的時候,獲取的結(jié)果是成員變量的值,
使用類名來調(diào)用,獲取的是類變量的值。
2、若類變量存在,成員變量不存在,
使用對象來調(diào)用的時候,它首先尋找成員變量,
如果成員變量不存在。則去尋找類變量。
3、若類變量不存在,成員變量存在:
使用類名來調(diào)用,則會報錯
總結(jié):
類變量通過類名或者對象來調(diào)用都不會報錯,但是成員變量只能通過對象來調(diào)用。
通過對象來修改類屬性的時候,只能作用到對象自己本身,作用不到類,
若是通過類名來修改類屬性,則只對類變量的值進(jìn)行修改。
class Person(object): # 類變量 name = "haha" age = "19" height = 170 def __init__(self,name,age,weight): # 成員變量 self.name = name self.age = age self.weight = weight def sayHeight(self): print(self.height) per = Person("xiaoming",19,50) print(per.name) print(Person.name) # print(Person.weight) per.height = 190 print(per.height) print(Person.height) print('*********') Person.height = 200 print(Person.height) print(per.height) per.sayHeight()
輸出:
xiaoming
haha
190
170
*********
200
190
190
類方法與成員方法
類方法,成員方法
類方法:使用類名來調(diào)用的方法
成員方法:使用對象來調(diào)用的方法
若一個方法定義在類中,但是沒有參數(shù)[一般默認(rèn)self],此時我們只能通過類名來調(diào)用
若我們需要使用到一個類的對象,首先要實例化。
class Person(object): def __init__(self,name,age): self.name = name self.age = age def say(self): print("I am %s, I am %d year old"%(self.name,self.age)) def sayHello(): print('hello I am class function') per = Person("xiaoming",19) per.say() Person.sayHello()
輸出:
I am xiaoming, I am 19 year old
hello I am class function
類方法與靜態(tài)方法
靜態(tài)方法:
當(dāng)調(diào)用此方法時,不會將類的實例傳遞給它。
在類中定義的函數(shù)。
無需實例化類,就可以調(diào)用。它的定義在繼承中,是不可變的。
類方法:
當(dāng)調(diào)用此方法時,將函數(shù)所屬的類作為第一個參數(shù)傳遞。
class A(object): def foo(self, x): print("executing foo(%s, %s)" % (self, x)) @classmethod def class_foo(cls, x): print("executing class_foo(%s, %s)" % (cls, x)) @staticmethod def static_foo(x): print("executing static_foo(%s)" % x) a = A() # 調(diào)用foo函數(shù),參數(shù)傳入1 a.foo(1) # 調(diào)用class_foo,參數(shù)傳入1 A.class_foo(1) # 調(diào)用static_foo,參數(shù)傳入1 A.static_foo(1) a.static_foo(1):
輸出:
executing foo(<__main__.A object at 0x0000024F126489B0>, 1)
executing class_foo(<class '__main__.A'>, 1)
executing static_foo(1)
executing static_foo(1)
下劃線
下劃線定義特殊的方法,一般情況下是系統(tǒng)定義名字,
如:
__init()__
、__del()__
前雙下劃線(age):表示私有類型的變量(privated),只能在本類中進(jìn)行訪問,外界不能直接訪問。如__age.
單下劃線(_age):以單下劃線開頭的表示保護(hù)類型變量(protected),
保護(hù)類型的變量只允許本身以及子類訪問,不能用于from module import *
[使用單下劃線開頭的時候,雖然變量能夠直接被訪問,但是請把變量視為一個保護(hù)類型的變量,盡量不要去訪問。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
- Python面向?qū)ο蟪绦蛟O(shè)計之私有變量,私有方法原理與用法分析
- Python面向?qū)ο蟪绦蛟O(shè)計之繼承、多態(tài)原理與用法詳解
- Python面向?qū)ο蟪绦蛟O(shè)計之靜態(tài)方法、類方法、屬性方法原理與用法分析
- Python面向?qū)ο蟪绦蛟O(shè)計之類和對象、實例變量、類變量用法分析
- Python3.5面向?qū)ο蟪绦蛟O(shè)計之類的繼承和多態(tài)詳解
- Python面向?qū)ο蟪绦蛟O(shè)計類的多態(tài)用法詳解
- Python面向?qū)ο蟪绦蛟O(shè)計類的封裝與繼承用法示例
- Python面向?qū)ο蟪绦蛟O(shè)計構(gòu)造函數(shù)和析構(gòu)函數(shù)用法分析
- Python面向?qū)ο蟮某绦蛟O(shè)計詳情
相關(guān)文章
Python?flask?框架使用flask-login?模塊的詳細(xì)過程
Flask-Login?是一個?Flask?模塊,可以為?Flask?應(yīng)用程序提供用戶登錄功能,這篇文章主要介紹了Python?flask?框架使用?flask-login?模塊,需要的朋友可以參考下2023-01-01python 給DataFrame增加index行名和columns列名的實現(xiàn)方法
今天小編就為大家分享一篇python 給DataFrame增加index行名和columns列名的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06python實現(xiàn)股票歷史數(shù)據(jù)可視化分析案例
股票交易數(shù)據(jù)分析可直觀股市走向,對于如何把握股票行情,快速解讀股票交易數(shù)據(jù)有不可替代的作用,感興趣的可以了解一下2021-06-06Python實現(xiàn)批量把SVG格式轉(zhuǎn)成png、pdf格式的代碼分享
這篇文章主要介紹了Python實現(xiàn)批量把SVG格式轉(zhuǎn)成png、pdf格式的代碼分享,本文代碼需要引用一個第三方模塊cairosvg,需要的朋友可以參考下2014-08-08Pycharm在創(chuàng)建py文件時,自動添加文件頭注釋的實例
今天小編就為大家分享一篇Pycharm在創(chuàng)建py文件時,自動添加文件頭注釋的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python神奇的內(nèi)置函數(shù)locals的實例講解
今天小編就為大家分享一篇關(guān)于Python神奇的內(nèi)置函數(shù)locals的實例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02Python+Selenium實現(xiàn)自動化的環(huán)境搭建的步驟(圖文)
這篇文章主要介紹了Python+Selenium實現(xiàn)自動化的環(huán)境搭建的步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09