自學python隨筆————面向對象
4 人贊了文章
class後面緊接著是類名,即Student,類名通常是大寫開頭的單詞,緊接著是(object),表示該類是從哪個類繼承下來的,繼承的概念我們後面再講,通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會繼承的類。
class Student(object): pass
和普通函數相比,類中的函數只有一點不同,就是第一個參數永遠是實例變數self,並且調用時不用傳遞該參數,除此之外並沒有什麼不同,一樣可以使用默認參數,可變參數,關鍵字參數,命名關鍵字參數。
class Student(object): def __init__(self, name, score): self.name = name self.score = score
和靜態語言不同,python允許對實例變數綁定任何數據。
>>> class Student(object): def __init__(self,name,score): self.name=name self.score=score >>> bart=Student("Bart Simpson",59)>>> bart.nameBart Simpson>>> bart.sge=5>>> bart.sge5
類中變數名前加_ _表示相對私有變數,相對條件下不允許外部直接訪問
>>> class Student(object): def __init__(self,name,score): self.__name=name self.__score=score def get_name(self): return self.__name def set_name(self,name): self.__name=name >>> qwe=Student("Bart Simpson",59)>>> qwe.get_name ()Bart Simpson>>> qwe.set_name("sb")>>> qwe.get_name()sb
- isinstance(object, classinfo)
- 判斷實例是否是指向這個類的變數
獲得對象的所有屬性和方法dir()
class Dog(object): def run(self): print("Dog is running")dir(Dog)[__class__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__, __weakref__, run]>>>
在python中,如果你調用len()試圖去獲得對象的長度,實際上len()調用該對象的__len__方法
len("abc")3>>> ("abc").__len__()3>>>
既然有dir()獲取對象的所有屬性和方法那麼也有分別獲取的方法
bro = Dog()>>> hasattr(bro,"run")#有屬性「run」嗎?True>>> f=getattr(bro,"run")#獲取屬性「run」>>> f()Dog is running>>> setattr(bro,"y",17)#設置屬性「y」>>> bro.y17
推薦閱讀:
※學習SQL【9】-集合與聯結
※常用SQL語句和語法匯總
※我所理解的學習
TAG:自學編程 |