python-25 面向對象-類的成員

在類中你能寫的所有內容都是類的成員

變量

1.實例變量

class person:
    def __init__(self,name,age,id):
        #這些變量都是實例變量,
        self.name = name
        self.age = age
        self.id = id
p = person("劉老六","88","10086")
print(p.name) #輸出"劉老六"
#如果需要修改裏面的內容,可以
p.name = "吳老五"
print(p.name) #輸出"吳老五"

類變量

#類變量
class preson:
    #類變量,每一個類都有一個自己的名稱空間,類變量是屬於類的但是可以被方法調用
    counter = "中國"
    def __init__(self,name,age,gender):
        self.name = name
        self.age = age
        self.gender = gender

p = preson("劉老六","88","10086")
p2 = preson("吳老五","86","10001")
print(p.name)
print(p.age)
print(p.counter)  #輸出:中國
p.counter = "大清朝"
print(p.counter) #輸出 : 大清朝
#此時上面沒有修改類變量,因爲此時上面定義的大清是修改了p的內存空間的變量,沒有修改preson的.
print(p2.counter) # 輸出: 中國
#####################################################################
#類變量
class preson:
    counter = "中國"
    def __init__(self,name,age,gender):
        self.name = name
        self.age = age
        self.gender = gender
#此時修改的纔是類中的變量
preson.counter = "大明"
p = preson("劉老六","88","10086")
p2 = preson("吳老五","86","10001")
print(p.counter)  #輸出 : 大明
p.counter = "大清朝"
print(p.counter) #輸出"大清"
print(p2.counter) #輸出 : 大明

方法

1.實例方法

使用 對象.方法 調用的就是實例方法
之前寫的都是

class computer:
    #此處定義兩個方法
    def play(self):
        print("電腦可以打遊戲")
    #在定義一個方法的時候必須給出一個參數,默認是self
    #在聲明的時候,需要給出self,self必須放在第一個位置
    def work(self):
        print("電腦可以寫代碼")

c = computer()
c.play()
#在調用的時候,會默認把對象傳遞給self
c.work()

2.類方法

類方法是屬於類的,在生命的時候,需要給出一個能夠接受類名的參數,cls
在調用的時候,自動把XX對象的類傳遞給cls

#類方法
class preson:
    def chi(self):
        print("人會吃飯")
    @classmethod
    def he(cls):  #此時cls接受到的是類名
        print(cls)
        print("人還能和水")
p = preson()  #輸出:<class '__main__.preson'>
p.he()  #輸出:人還能和水
print(preson)  #輸出:<class '__main__.preson'>
#類方法一般用類名去訪問,但是類名不能調用實例方法.
preson.he()  #輸出 : 人還能和水

類變量最好是由類方法去調用

3.靜態方法

靜態方法也是屬於類的,但是他不需要傳遞self和cls,就好比在類中定義了一個函數
靜態方法一般和類方法差不多,也都使用類名去訪問

class preson:
    @staticmethod #靜態方法
    def yue():
        print("約嗎?")

# 靜態方法可以使用對象訪問,也能使用類名訪問,推薦使用類名訪問
p = preson()
p.yue()  #輸出 :約嗎?
preson.yue()  #輸出 : 約嗎?
發佈了130 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章