python之成員(物件導向)

七、月發表於2018-12-18

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

  

class Person:
    def __init__(self, name, gender):
        self.name = name  # 成員
        self.gender = gender # 成員
    def run(self):  # 成員
        print(`會跑`)

 

2. 變數
  1. 例項變數: 昨天寫的就是實力變數, 由物件去訪問的變數.
  2. 類變數. 此時. 這個變數屬於類. 但是物件也可以訪問.

  

class Person:
    contry = `中國`
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
p = Person(`Tom`, ``)
p1 = Person("Jerry", ``)
print(p.name)
# p1.contry = `美國`
# print(p1.contry) # 美國
# print(p.contry) # 中國
Person.contry = `大中國`
print(p1.contry) # 大中國
print(p.contry) # 大中國

 

  

3. 方法
  1. 例項方法: 昨天寫的就是例項方法. 使用 物件.方法()
    特點: 在宣告的時候. 需要給出self, self必須放在第一個位置
    在呼叫的時候. 自動的會把物件傳遞給形參的self

  2. 類方法(@classmethod): 類方法是屬於類的.
    特點:在宣告的時候需要給出一個能夠接受類名的引數, cls , 也必須放在引數的第一個
    在呼叫的時候. 自動得把xx物件的類傳遞給cls

class Person:
    # 例項方法
    def chi(self):
        print(`人會吃`)
    @classmethod
    def he(cls):
        print(`人會喝`)
# # 用物件訪問
# p = Person()
# p.he() # 在呼叫類方法的時候, 預設的把類名傳遞給類方法
# print(Person)

# 類方法一般用類名去訪問
Person.he() # 類方法  #人會喝

  3. 靜態方法(@staticmethod): 靜態方法也是屬於類的. 靜態方法就好比. 我們在類中定義了一個函式
    靜態方法一般和類方法差不多. 使用類名去訪問

class Person:
    @staticmethod # 靜態方法
    def he():
        print(`人會喝`)

# # 靜態方法可以使用物件訪問, 也可以使用類名訪問. 推薦使用類名訪問
# p = Person()
# p.he() # 人會喝

# 類名訪問
Person.he() #  人會喝

4. 屬性
  在方法上新增一個@property. 可以把一個方法變成一個屬性. 但是這個屬性不可以被賦值
  當我們某一個屬性必須經過計算才能得到結果的時候.

  

class Person:
    def __init__(self, name, gender, birth):
        self.name = name
        self.gender = gender
        self.birth = birth
    @property # 把一個方法更改為一個屬性,每次拿屬性都會執行這個方法,方法返回值是屬性
    def age(self):
        print(`我是方法`)
        return 2018 - self.birth

p1 = Person(`Jerry`, ``, 1994)
print(p1.name) # Jerry
print(p1.age) # 我是方法   24
print(p1.age) # 我是方法   24

 

5. 私有
  所有以雙下劃線開頭的方法, 變數都是私有內容. 外界無法訪問. 除非你主動暴露這些內容

相關文章