類(Class): 用來描述具備相同的屬性和方法的對象的集合。數據庫
對象,實例:經過類實例化出來的東西函數
屬性:類裏面的變量spa
方法:類裏面的方法code
實例方法:正常定義的帶self函數都是實例方法對象
類方法:
一、不實例化,直接用類名調用
二、它能夠使用類變量,cls.xxx
三、實例也能夠直接經過self.xx來使用類方法
四、類方法裏面它是不能用這些實例方法和實例變量
靜態方法:
就是一個普通的函數,只是定義在類裏面而已。
#用不了實例方法、用不了實例變量、也用不了類方法、類變量
#也不須要實例化,直接類名調用便可。
屬性方法:
看起來像變量的一個函數。
一、實例方法
二、它不能有入參
三、用它的時候,直接m.func,把它當作一個變量用就ok了,不須要加括號調用
四、它是獲取函數的返回值blog
class Person:#類,類名大寫開頭,經典類,類帶括號也能夠 country = 'China' eyes = 2 ears = 2#類變量,不須要實例化就能夠調用 mouth = 1 def __init__(self,name):#構造函數,實例化類的時候自動執行構造函數 print('begin to make people') stu = 'nhy' #函數的局部變量,出函數不能夠用 self.name = name #屬性,實例變量,成員變量,需實例化才能用 def cry(self):#實例方法 print(self.ears) #也能夠實例化後調用類變量,如今實現化變量中找,再去類變量中找 print('%s is wawawa,he has %s eyes'%(self.name,self.eyes)) class House(object):#帶括號是新式類,沒啥區別 def save(self): print('能住人')
class My: country = 'China' #類變量 def __init__(self): print('構造函數,實例化時,會執行它') # self.__conn = pymongo.MongoClient(host='22.2.2.2',port=27017) #實例方法 def __del__(self):#析構函數,當實例被銷燬的時候會自動執行.程序結束,實例銷燬 # self.conn.close() #關數據庫、關閉文件的時候,寫在裏面比較合適 print('我是的析構函數') def say(self): #實例方法 self.__cry() print('我是實例方法') def __cry(self):#前面有兩個__則爲私有函數,只能在類中調用,出了類就不能用了 print('我是私有函數,只能在類中調用') @classmethod#裝飾器,類方法 def eat(cls): print(cls.country) print('類方法') # # 類方法,用classmethod修飾 # 一、不實例化,直接用類名調用 # 二、它能夠使用類變量,cls.xxx # 三、實例也能夠直接經過self.xx來使用類方法 # 四、類方法裏面它是不能用這些實例方法和實例變量 @staticmethod def run(): print('靜態函數')#直接類名調用就能夠 @property #屬性函數,屬於實例方法,無入參,調用時不用加括號 def red_bag(self): return 100
繼承
繼承
目的是簡化代碼,減小重複代碼
修改父類的方法,重寫,在修改父類方法的基礎上先調用下父類的方法 super().__init__(ip,port)ip
class Base: #基類 def __init__(self,ip,port): self.ip = ip self.port = port class MongoDb(Base): def __init__(self,ip,port): # Base.__init__(self,ip,port) super().__init__(ip,port)#繼承父類能夠用super self.db = pymongo.MongoClient(host=self.ip, port=self.port) def save(self,data): self.db['db']['table'].insert(data)