python 類與對象

類的成員

python 類與對象

實例變量

實例變量就是對象個體特有的「數據」。python

#定義類
class Dog:
    def __init__(self, name, age):
        self.name = name  #建立和初始化實例變量name
        self.age = age  #建立和初始化實例變量age

#實例化對象
dog=Dog('球球',2)
#對實例變量經過 「對象.實例變量」 形式訪問
print('這是我家的狗,名字是%s, 如今%d歲了!'%(dog.name,dog.age))
#這裏後面不能直接使用name,age

運行效果:

python 類與對象

構造方法

_init_()方法就是構造方法,構造方法用來初始化實例變量。
在定義_init_() 方法時,它的第一個參數應該是self,以後的參數用來初始化實例變量。調用構造方法是不須要傳入self參數。ide

例子:

class Dog:
    def __init__(self, name, age, sex='雌性'):
        self.name = name
        self.age = age
        self.sex = sex

d1=Dog('球球',2)
d2=Dog('果果',1,'雄性')
d3=Dog('小白',3,'雄性')
print(d1.name,d1.age,'歲',d1.sex)
print(d2.name,d2.age,'歲',d2.sex)
print(d3.name,d3.age,'歲',d3.sex)

運行效果:

python 類與對象

實例方法

實例方法和實例變量同樣,都是某個實例(或對象)個體的特有方法。
定義實例方法時,它的第一個參數也應該是self,這會將當前實例與該方法綁定起來,這也說明該方法屬於實例,在調用方法時不須要傳入self,相似於構造方法函數

例子:

class Dog:
    def __init__(self, name, age, sex='雌性'):
        self.name = name
        self.age = age
        self.sex = sex

    def run(self):  #定義實例方法,只有一個self參數
        print('小狗{}在跑 。。。'.format(self.name))

    def speak(self, sound): #定義實例方法,第一個參數是self,第二個參數是age,第三個參數是sound
        print('{}歲的小狗{}在叫着:{}'.format(self.age, self.name, sound))

dog = Dog('球球', 2)  #建立對象調用構造方法,省略默認值
dog.run() #在調用時採用「對象.實例方法」 形式,不須要傳遞參數
dog.speak('旺! 旺! 旺!') #須要傳遞一個參數sound

運行效果:

python 類與對象

類變量

類變量是屬於類的變量,不屬於單個對象。3d

代碼以下:

class Account:
    interest_rate=0.0568  #類變量利率

    def __init__(self,owner,amount):
        self.owner=owner  #建立並初始化實例變量
        self.amount=amount

account=Account('kk',800000.0)
print('帳戶名: %s'%account.owner)
print('帳戶餘額: %s'%account.amount)
print('利率: %s'%Account.interest_rate) #對類變量經過「類名.類變量」 形式訪問

運行結果:

python 類與對象

類方法

類方法與類變量相似,屬於類,不屬於個體實例。在定義類的方法時,它的第一個參數不是self,而是類自己rest

class Account:
    interest_rate=0.0568  #類變量利率

    def __init__(self,owner,amount):
        self.owner=owner  #建立並初始化實例變量
        self.amount=amount
    #定義類方法須要的裝飾器,修飾函數、方法和類,用來約束它們
    @classmethod
    def interest_by(cls,amt): #cls表明類自身,即Account 類
              #cls能夠直接使用Account替換,因此cls.interest_rate * amt 表達式能夠改成Account.interest_rate * amt 
        return cls.interest_rate * amt

interest=Account.interest_by(10000.0) #對類方法經過「類名.類變量」 形式訪問
print('計算利息: %f 元'%interest)

運行結果:

python 類與對象

注意:

類方法能夠訪問類變量和其餘類方法,但不能訪問其餘實例方法和實例變量。在上面例子中,cls.interest_rate用於訪問Account類變量interest_rate。若是在類方法interest_by()中添加訪問實例變量的owner語句,則會發生錯誤。code

#類方法
  @classmethod
    def interest_by(cls, amt):  # cls表明類自身,即Account 類
        print(cls.owner)
        return cls.interest_rate * amt

python 類與對象

相關文章
相關標籤/搜索