1. 程式人生 > >Python基礎---面向物件

Python基礎---面向物件

物件和類的關係:懶得說,Java中接觸的頭疼
定義類:
        class 類名:
               屬性列表
               方法列表
建立物件:
                 物件名 = 類名()
屬性:私有化在屬性前加    __ ==java 的 private

方法:定義關鍵字  def
        注意:類定義的方法至少有一個引數,一般以self變數作為該引數,且作為第一個引數
                           對比java中 this 理解
構造器
        構造器"方法,的格式如下:  === java 的 構造方法
                def __init__( 引數s):

        建立物件後,主動呼叫
析構  
        建立物件時,預設呼叫構造方法
        刪除物件時,預設呼叫析構方法
            析構方法(__del__())

class Animal():
    # 構造方法
    def __init__(self):
        print ('---構造方法被呼叫---')

    # 析構方法
    def __del__(self):
        print ('---析構方法被呼叫---')

# 建立物件
dog = Animal()

# 刪除物件
del dog

繼承  不多說了
        class 子類(父類):

多繼承  一個子類還幾個父類   有點亂吧     java只有單繼承

# 定義一個父類
class A:
    def printA(self):
        print '----A----'

# 定義一個父類
class B:
    def printB(self):
        print '----B----'

# 定義一個子類,繼承自A、B
class C(A,B):
    def printC(self):
        print '----C----'

obj_C = C()
obj_C.printA()
obj_C.printB()

                              父類中有同名的方法,按照繼承順序執行

多型     定義時的型別和執行時的型別不一樣
            一般是 引數型別,引數個數
類方法和靜態方法:
    1.類方法:類物件所擁有的方法,需要用修飾器@classmethod來標識
            操作類物件=== Java  generator setter and  getter
            X.第一個引數必須是類物件,一般以cls作為第一個引數
            X.類方法可以對類屬性進行修改

class people:
    country = 'china'

    #類方法,用classmethod來進行修飾
    @classmethod
    def getCountry(cls):
        return cls.country

    @classmethod
    def setCountry(cls,country):
        cls.country = country


p = people()
print (p.getCountry()    )#可以用過例項物件引用
print (people.getCountry())    #可以通過類物件引用

p.setCountry('japan')   

print (p.getCountry()   )
print (people.getCountry())


    2.靜態方法:需要修飾器@staticmethod來進行修飾,靜態方法不需要多定義引數

class people:
    country = 'china'
    
    @staticmethod
    #靜態方法
    def getCountry():
        return people.country
    
print (people.getCountry())

總結:
        1.類方法的第一個引數是類物件cls,那麼通過cls引用的必定是類物件的屬性和方法;
        2.例項方法的第一個引數是例項物件self,那麼通過self引用的可能是類屬性、也有可能是例項屬性,        相同名稱的類屬性和例項屬性,例項屬性優先順序更高。
        3.靜態方法不需要額外定義引數,必須通過類物件來引用靜態方法===java  static