
Python中的類屬性、實例屬性與類方法、靜態方法
1、什么是類對象,實例對象
類對象:類名
實例對象:類創建的對象
2、類屬性就是類對象所擁有的屬性,它被所有類對象的實例對象所共有,在內存中只存在一個副本,這個和C++、Java中類的靜態成員變量有點類似。對于公有的類屬性,在類外可以通過類對象和實例對象訪問
類屬性
[java] view plain copy
# 類屬性
class people:
name="Tom" #公有的類屬性
__age=18 #私有的類屬性
p=people()
print(p.name) #實例對象
print(people.name) #類對象
# print(p.__age) #錯誤 不能在類外通過實例對象訪問私有的類屬性
print(people.__age) #錯誤 不能在類外同過類對象訪問私有的類屬性
實例屬性
[java] view plain copy
class people:
name="tom"
p=people()
p.age=18
print(p.name)
print(p.age) #實例屬性是實例對象特有的,類對象不能擁有
print(people.name)
#print(people.age) #錯誤:實例屬性,不能通過類對象調用
也可以將實例屬性放在構造方法中
[java] view plain copy
class people:
name="tom"
def __init__(self,age):
self.age=age
p=people(18)
print(p.name)
print(p.age) #實例屬性是實例對象特有的,類對象不能擁有
print(people.name)
# print(people.age) #錯誤:實例屬性,不能通過類對象調用
類屬性和實例屬性混合
[java] view plain copy
class people:
name="tom" #類屬性:實例對象和類對象可以同時調用
def __init__(self,age): #實例屬性
self.age=age
p=people(18) #實例對象
p.sex="男" #實例屬性
print(p.name)
print(p.age) #實例屬性是實例對象特有的,類對象不能擁有
print(p.sex)
print(people.name) #類對象
# print(people.age) #錯誤:實例屬性,不能通過類對象調用
# print(people.sex) #錯誤:實例屬性,不能通過類對象調用
# 如果在類外修改類屬性,必須通過類對象去引用然后進行修改。如果通過實例對象去引用,
# 會產生一個同名的實例屬性,這種方式修改的是實例屬性,不會影響到類屬性,并且如果通過
# 實例對象引用該名稱的屬性,實例屬性會強制屏蔽掉類屬性,即引用的是實例屬性,除非刪除了該實例屬性
[java] view plain copy
class Animal:
name="Panda"
print(Animal.name) #類對象引用類屬性
p=Animal()
print(p.name) #實例對象引用類屬性時,會產生一個同名的實例屬性
p.name="dog" #修改的只是實例屬性的,不會影響到類屬性
print(p.name) #dog
print(Animal.name) #panda
# 刪除實例屬性
del p.name
print(p.name)
[java] view plain copy
class Test:
num=100 #類屬性
def __init__(self):
self.age=18 #實例屬性
test1=Test()
test2=Test()
# test1.age=19
# test2.age=20
print(test1.num) #100
test1.num=200 #如果通過對象去修改類屬性,那么Python會自動給這個對象和這個類屬性相同名字的實例屬性
print(test1.num) #200,只是修改了副本
print(Test.num) #100
del test1.num #刪除之后,仍能打印
print(test1.num)
3、類方法
是類對象所擁有的方法,需要用修飾器@classmethod來標識其為類方法,對于類方法,第一個參數必須是類對象,一般以cls作為第一個參數(當然可以用其他名稱的變量作為其第一個參數,但是大部分人都習慣以'cls'作為第一個參數的名字,就最好用'cls'了),能夠通過實例對象和類對象去訪問。
[java] view plain copy
class people:
country="china"
@classmethod
def getCountry(cls):
return cls.country
p=people()
print(p.getCountry()) #實例對象調用類方法
print(people.getCountry()) #類對象調用類方法
類方法還有一個用途就是可以對類屬性進行修改:
[java] view plain copy
class people:
country="china"
@classmethod
def getCountry(cls):
return cls.country
@classmethod
def setCountry(cls,country):
cls.country=country
p=people()
print(p.getCountry()) #實例對象調用類方法
print(people.getCountry()) #類對象調用類方法
p.setCountry("Japan")
print(p.getCountry())
print(people.getCountry())
4、靜態方法
需要通過修飾器@staticmethod來進行修飾,靜態方法不需要多定義參數
[java] view plain copy
class people3:
country="china"
@staticmethod
def getCountry():
return people3.country
p=people3()
print(p.getCountry()) #實例對象調用類方法
print(people3.getCountry()) #類對象調用類方法
從類方法和實例方法以及靜態方法的定義形式就可以看出來,類方法的第一個參數是類對象cls,那么通過cls引用的必定是類對象的屬性和方法;而實例方法的第一個參數是實例對象self,那么通過self引用的可能是類屬性、也有可能是實例屬性(這個需要具體分析),不過在存在相同名稱的類屬性和實例屬性的情況下,實例屬性優先級更高。
靜態方法中不需要額外定義參數,因此在靜態方法中引用類屬性的話,必須通過類對象來引用
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25