1. 程式人生 > 實用技巧 >python類和例項化

python類和例項化

例項變數和類變數

class Student:              # 類的定義體
    classroom = '101'           # 類變數
    address = 'beijing'
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def print_age(self):
        print('%s: %s' % (self.name, self.age))
re=Student('小明','25')
print(re.name) # 例項變數name
print(re.age) # 例項變數age

print(Student.classroom) # 通過類名訪問類變數
print(Student('小明','25').address) # re本身沒有classroom例項變數,所以去尋找類變數,它找到了!

輸出結果:
小明
25
101
beijing

例項化方法

class Student:              # 類的定義體
    classroom = '101'           # 類變數
    address = 'beijing'
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def print_age(self):
        print('%s: %s' % (self.name, self.age))
re=Student('小明','25').print_age()

輸出結果:
小明: 25

靜態方法

靜態方法由類呼叫,無預設引數。將例項方法引數中的self去掉,然後在方法定義上方加上@staticmethod,就成為靜態方法。它屬於類,和例項無關。建議只使用類名.靜態方法的呼叫方式。(雖然也可以使用例項名.靜態方法的方式呼叫)

class Student(object):
    @staticmethod
    def print_age(name,age):
        print('%s: %s' % (name, age))
re=Student.print_age('小明','25')

輸出結果:
小明: 25

類方法

類方法由類呼叫,採用@classmethod裝飾,至少傳入一個cls(代指類本身,類似self)引數。執行類方法時,自動將呼叫該方法的類賦值給cls。建議只使用類名.類方法的呼叫方式。(雖然也可以使用例項名.類方法的方式呼叫)

class Student(object):
    @classmethod
    def print_age(cls,name,age):
        cls.name=name
        cls.age=age
        print('%s: %s' % (cls.name, cls.age))
re=Student.print_age('小明','25')

輸出結果:
小明: 25