python物件導向

2021-10-10 22:01:03 字數 1860 閱讀 3293

運算子過載

python同樣支援運算子過載,例項如下:

例項

class vector:

def __init__(self, a, b):

self.a = a

self.b = b

def __str__(self):

return 'vector (%d, %d)' % (self.a, self.b)

def __add__(self,other):

return vector(self.a + other.a, self.b + other.b)

v1 = vector(2,10)

v2 = vector(5,-2)

print v1 + v2

以上**執行結果如下所示:

vector(7,8)
類屬性與方法

類的私有屬性

__private_attrs:兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。

類的方法

在類的內部,使用 def 關鍵字可以為類定義乙個方法,與一般函式定義不同,類方法必須包含引數 self,且為第乙個引數

類的私有方法

__private_method:兩個下劃線開頭,宣告該方法為私有方法,不能在類的外部呼叫。在類的內部呼叫 self.__private_methods

例項

class justcounter:

__secretcount = 0 # 私有變數

publiccount = 0 # 公開變數

def count(self):

self.__secretcount += 1

self.publiccount += 1

print self.__secretcount

counter = justcounter()

counter.count()

counter.count()

print counter.publiccount

print counter.__secretcount # 報錯,例項不能訪問私有變數

python 通過改變名稱來包含類名:12

2traceback (most recent call last):

file 「test.py」, line 17, in

print counter.__secretcount # 報錯,例項不能訪問私有變數

attributeerror: justcounter instance has no attribute 『__secretcount』

python不允許例項化的類訪問私有資料,但你可以使用 object._classname__attrname( 物件名._類名__私有屬性名 )訪問屬性,參考以下例項:

class runoob:

__site = "nmal"

runoob = runoob()

print runoob._runoob__site

執行以上**,執行結果如下:

nmal

單下劃線、雙下劃線、頭尾雙下劃線說明:

foo: 定義的是特殊方法,一般是系統定義名字 ,類似init() 之類的。

_foo: 以單下劃線開頭的表示的是 protected 型別的變數,即保護型別只能允許其本身與子類進行訪問,不能用於 from module import *

__foo: 雙下劃線的表示的是私有型別(private)的變數, 只能是允許這個類本身進行訪問了。

python物件導向學習 python物件導向學習

物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。物件導向三個概念 1.封裝 即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進...

python物件導向總結 Python物件導向總結

python 物件導向 oop 1 物件導向 是乙個更大封裝,把乙個物件封裝多個方法 2 類 是對一些具有相同特徵或行為的事物的乙個統稱,是抽象的,不能直接使用 特徵被稱為屬性 行為被稱為方法 3 物件 是由類建立出來的乙個具體的存在,可以直接使用 先有類再有物件,類只有乙個,而物件可以有多個 類中...

python登入物件導向 python 物件導向

一 屬性和方法 1.a a 例項屬性 通過例項物件來新增的屬性就是例項屬性 a.count 10 例項方法都是在類中直接定義的 以self為第乙個引數的方法都是例項方法 當通過例項物件呼叫時,會自動傳遞當前物件作為self傳入 當通過類物件呼叫時,不會自動傳遞self a.test 等價於 a.te...