Python 看書的一些記錄 運算子過載

2021-09-01 09:54:04 字數 1743 閱讀 2484

(1)類是模組的一部分,是模組物件的屬性。

(2)類和模組都是命名空間,但是類是對於語法的。模組是對於檔案的

(3)類支援多個例項,但是模組被匯入時只有乙個。

抽象超類就是指類的部分行為需要由其子類提供

class person(object):

"""docstring for person"""

def __init__(self,name):

self.name = name

def test_func(self):

self.action() # 實現action方法需要在子類中定義進行呼叫

class teacher(person):

"""docstring for teacher"""

def action(self):

print(self.name)

if __name__ =="__main__":

teacher = teacher("sunqi")

teacher.test_func()

直到發生stopiteration異常

__getattr__ 會在類中查詢屬性時呼叫。

__setattr__ 會在設定屬性時呼叫

__getattribute__會在查詢屬性時呼叫(無論屬性是否存在)

class test(object):

def __init__(self,data):

self.data = data

def __getattribute__(self,attrname):

print("__getattribute__")

return object.__getattribute__(self,attrname)

def __getattr__(self,attrname):

print("__getattr__")

if attrname == "age":

return 40

else :

return attributeerror

def __setattr__(self,attrname,value):

print("__setattr__")

self.__dict__[attrname] = value

# self.__setattr__(attrname,value)

if __name__ == "__main__":

t = test("test")

print(t.data)

print("*" * 10)

print(t.age)

print("*" * 10)

print(t.name)

t.name = "sunqi"

__setattr__

__getattribute__

__getattribute__

test

**********

__getattribute__

__getattr__

40**********

__getattribute__

__getattr__

__setattr__

__getattribute__

當加號右側是類例項,左側不是類例項才會呼叫__radd__,其他情況都會由左側物件呼叫__add__方法(了解一下)

__iadd__ 實現了+=功能

記錄一些python的使用

1.從list中取出每個int元素,用0補為固定長度,形成乙個字串 box str join 0 4 len str x str x for x in position 2.用來計算兩個矩形overlap的函式 def mat inter box1,box2 判斷兩個矩形是否相交 box xa,ya...

Python基礎學習的一些記錄

file1 open users baoxiao desktop test score.txt r encoding utf 8 readlines 會從txt檔案取得乙個列表,列表中的每個字串就是scores.txt中的每一行。而且每個字串後面還有換行的 n符號。filelines file1.r...

一些位運算

該篇文章會持續更新將遇到的位運算在這進行解釋 1.按位與 運算 運算規則 0 0 0 0 1 0 1 0 0 1 1 1 例如 8的二進位制 00001000 5的二進位制 00000101 8 5 0000 0000 轉換成十進位制就是0 與運算 的特殊用途 1 清零。如果想將乙個單元清零,即使其...