這篇文章主要介紹了Python編程之屬性和方法,以實(shí)例形式較為詳細(xì)的分析了Python中屬性與方法的功能、特點(diǎn)與使用技巧,需要的朋友可以參考下
本文實(shí)例講述了Python編程中屬性和方法使用技巧。分享給大家供大家參考。具體分析如下:
一、屬性
在python中,屬性分為公有屬性和私有屬性,公有屬性可以在類的外部調(diào)用,私有屬性不能在類的外部調(diào)用。公有屬性可以是任意變量,私有屬性是以雙下劃線開頭的變量。
下面我們定義一個People類,它有一個公有屬性name,和一個私有屬性__age。
- class People():
- def __init(self):
- self.name='張珊'
- self.__age=24
我們創(chuàng)建一個People類的實(shí)例,P1,當(dāng)我們調(diào)用它的私有屬性__age時(shí)發(fā)現(xiàn)有如下錯誤。
>>> p1.__age
Traceback (most recent call last):
File "
p1.__age
AttributeError: 'People' object has no attribute '__age'
這就說明了私有屬性不可以在類的外部使用。那么我們要想調(diào)用私有屬性的值,就可以在類的內(nèi)部通過定義一個方法來調(diào)用。
- >>> class People():
- def __init__(self):
- self.name='jack'
- self.__age=23
- def showinfo(self):
- print(self.__age)
- >>> p2=People()
- >>> p2.showinfo()
- 23
可能有人會問,為什么加上雙下劃線的屬性,我們就不可以在類的外部調(diào)用了呢?那么下面我們就探討下python面向?qū)ο蟮乃接袡C(jī)制。
Python中以雙下劃線開頭的屬性和方法,在被實(shí)例化后會自動在其名字前加_classname.因?yàn)槊直桓淖兞?,所以自然無法通過雙下滑線開頭的名字來訪問,從而達(dá)到不可進(jìn)入的目的。
我們可以通過實(shí)例名.__dict__來查看對象的屬性集合。
Python中不同于其他面向?qū)ο蟮木幊陶Z言,python的設(shè)計(jì)哲學(xué)就是簡單至上,因此如果你真的想要調(diào)用私有屬性的話還是可以調(diào)用的。
二、方法
在python中方法分為公有方法、私有方法、類方法和靜態(tài)方法。
下面我們看一個比較完整的例子
- #!/usr/bin/python
- #coding:utf-8
- __author__ = 'MXi4oyu'
- class People():
- def __init__(self):
- self.name='張珊'
- self.__age=23
- def fun1(self):
- #共有方法可以在類的外部進(jìn)行調(diào)用
- #可以通過對象名.方法名來調(diào)用
- print("共有方法")
- def __fun2(self):
- #私有方法不能在類的外部進(jìn)行調(diào)用
- #可以在類的其他方法中調(diào)用私有方法
- print("私有方法")
- def funcshow(self):
- self.__fun2()
- @classmethod
- #類方法要加上@classmethod修飾器,類方法可以通過類名.方法名進(jìn)行調(diào)用
- def fun3(self):
- print("類方法")
- @staticmethod
- #靜態(tài)方法需要加上@staticmethod修飾器,靜態(tài)方法不需要加self,
- #同樣可以通過類名.方法名調(diào)用
- def fun4():
- print("靜態(tài)方法")
- if __name__=='__main__':
- p1=People()
- p1.fun1()
- p1.funcshow()
- People.fun3()
- People.fun4()
希望本文所述對大家的Python程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選