(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 清零。如果想將乙個單元清零,即使其...