標籤:

自學python隨筆————面向對象

自學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

  1. isinstance(object, classinfo)
  2. 判斷實例是否是指向這個類的變數

獲得對象的所有屬性和方法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:自學編程 |