面對對象編程--類、繼承

類(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)
相關文章
相關標籤/搜索