Python編程系列教程第12講——屬性和方法

視頻地址:http://v.youku.com/v_show/id_XNTgyOTg4NjQ4.htmlhtml

普及網絡安全知識,推進信息技術發展。python

爲祖國的網絡安全撐起一片藍天,爲網絡安全愛好者構建一方家園。程序員

歡迎來到灰帽程序員論壇,咱們的網址是:http://www.hmhacker.orgweb

論壇是以技術交流爲主(非商業性質論壇,不從事任何非法入侵活動)shell

你們好,我是小雨,QQ:798033502編程

今天給你們帶來的教程是《Python編程系列教程第12講——屬性方法安全

1、屬性網絡

python中,屬性分爲公有屬性和私有屬性,公有屬性能夠在類的外部調用,私有屬性不能在類的外部調用。公有屬性能夠是任意變量,私有屬性是以雙下劃線開頭的變量。編程語言

下面咱們定義一個People類,它有一個公有屬性name,和一個私有屬性__agespa

class People():

def __init(self):

self.name='張珊'

self.__age=24

咱們建立一個People類的實例,P1,當咱們調用它的私有屬性__age時發現有以下錯誤。

>>> p1.__age

Traceback (most recent call last):

  File "<pyshell#7>", line 1, in <module>

    p1.__age

AttributeError: 'People' object has no attribute '__age'

這就說明了私有屬性不能夠在類的外部使用。那麼咱們要想調用私有屬性的值,就能夠在類的內部經過定義一個方法來調用。

 

>>> class People():

def __init__(self):

    self.name='jack'

    self.__age=23

def showinfo(self):

    print(self.__age)

>>> p2=People()

>>> p2.showinfo()

23

可能有人會問,爲何加上雙下劃線的屬性,咱們就不能夠在類的外部調用了呢?那麼下面咱們就探討下python面向對象的私有機制。

Python中以雙下劃線開頭的屬性和方法,在被實例化後會自動在其名字前加_classname.由於名字被改變了,因此天然沒法經過雙下滑線開頭的名字來訪問,從而達到不可進入的目的。

咱們能夠經過實例名.__dict__來查看對象的屬性集合。

Python中不一樣於其餘面向對象的編程語言,python的設計哲學就是簡單至上,所以若是你真的想要調用私有屬性的話仍是能夠調用的。

2、方法

python中方法分爲公有方法、私有方法、類方法和靜態方法。

下面咱們看一個比較完整的例子

#!/usr/bin/python

#coding:utf-8

__author__ = 'MXi4oyu'

 

class People():

    def __init__(self):

        self.name='張珊'

        self.__age=23

    def fun1(self):

        #共有方法能夠在類的外部進行調用

        #能夠經過對象名.方法名來調用

        print("共有方法")

    def __fun2(self):

        #私有方法不能在類的外部進行調用

        #能夠在類的其餘方法中調用私有方法

        print("私有方法")

    def funcshow(self):

        self.__fun2()

    @classmethod

    #類方法要加上@classmethod修飾器,類方法能夠經過類名.方法名進行調用

    def fun3(self):

        print("類方法")

    @staticmethod

    #靜態方法須要加上@staticmethod修飾器,靜態方法不須要加self,一樣能夠經過類名.方法名調用

    def fun4():

        print("靜態方法")

 

if __name__=='__main__':

    p1=People()

    p1.fun1()

    p1.funcshow()

    People.fun3()

    People.fun4()

相關文章
相關標籤/搜索