面向對象設計—類和對象(二)(包含__call__方法,私有屬性和私有方法,靜態方法)(超詳細的學習筆記)

一、__call__方法的對象

定義了__call__方法的對象,稱爲“可調用對象”,即__call__()方法能夠讓類的實例對象,像函數一樣被調用

代碼演示:

class count:
    def __init__(self,a):
        self.a=a
    def __call__(self,b):
        x=self.a+b
        print(x)
    def print(self):
        print (self.a)
Count=count("you")
Count.print()
Count(" are good")

結果:

you
you are good

補充:如果只看 Count(" are good") 是無法知道它是函數還是一個類實例;直接調用實例名也是__call__()方法起的作用。

二、私有屬性和私有方法

注意要點:

(1)通常我們約定,兩個下劃線開頭的屬性是私有的。
(2)類內部可以訪問私有屬性(方法),類外部不能直接訪問私有屬性(方法)
(3)類外部可以通過“_類名__私有屬性(方法)”訪問私有屬性(方法)

代碼1:

class Employee:
    def __init__(self,name,age):
        self.name=name
        self.age=age
a=Employee("小明","20")
print(a.name)
print(a.age)

結果:

小明
20

如果對年齡進行私有的話:

class Employee:
    def __init__(self,name,age):
        self.name=name
        self.__age=age
a=Employee("小明","20")
print(a.name)
print(a.age)

結果:
在這裏插入圖片描述
如果想訪問的話可以:

class Employee:
    def __init__(self,name,age):
        self.name=name
        self.__age=age
a=Employee("小明","20")
print(a.name)
print(a._Employee__age)#可以看上面注意要點內部紅字

結果:

小明
20

代碼2:

class Employee:
    def __init__(self,name,age):
        self.name=name
        self.__age=age
    def __count(self):
        print("中國速度")
a=Employee("小明","20")
print(a.name)
print(a._Employee__age)
a._Employee__count()

結果:

小明
20
中國速度

三、靜態方法

要點:
1、Python中允許定義與:類對象,無關的方法,稱爲“靜態方法”。
2、”靜態方法“和模塊中定義普通函數沒有區別,著不過"靜態方法"放到了“類的名字空間裏面”,xuyaotongguo“類調用”。
3、靜態方法通過裝飾器@staticmethod來定義,格式如下:

@staticmethod
def 靜態方法名([形參列表]):
      函數體

補充:

我總結我所有python筆記於一篇博客裏:
點擊即可進入Python學習筆記大總結(我把我所有python筆記做了總結和學習順序,點擊即可進入相關博客。希望可以便於你們閱讀)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章