1. 程式人生 > >day16 類的成員

day16 類的成員


成員 類中寫的內容就是成員
變數
1. 例項變數(成員變數, 欄位). 物件.xxx = xxx 例項變數 -> 欄位 -> 屬性. 給物件用的

2. 類變數. 直接寫在類中的變數就是類變數. 類變數一般用類名來訪問. 物件中共性的屬性提取出來.即所有該類的物件共享的的變數
class Person:
    country = "中國"      # 類變數
    def __init__(self,name, age):
        self.name = name
        self.age 
= age # Person.country = "大清" # print(Person.country) # 直接使用類名進行訪問 p1 = Person("alex", 185) p1.country = "大清" # 添加了一個例項變數 print(p1.name) print(p1.country) p2 = Person("wusir", 145) print(p2.name) print(p2.country) # 類變數的修改只能通過類名來完成
View Code
        
     方法
1. 例項方法(成員方法). 物件直接訪問的方法 物件.方法()
class Computer:
# 例項⽅法(成員⽅法)
    def play(self):
    print("我的電腦可以玩⼉")
c = Computer()
c.play() # 物件直接去調⽤例項⽅法
View Code
            2. 類方法. 需要在引數列表的第一位置預留位置, 引數起名cls,被呼叫時也不需要傳遞例項物件  新增@classmethod   類名.方法()
class Computer:
    def play(self):
        print("我的電腦可以玩⼉")
    @staticmethod
    
def fare(): print("我的電腦⾮常⽜B, 可以煎雞蛋") @classmethod def cal(cls, a, b): print(cls) return a+b print(Computer.cal(1, 2)) # 此時會⾃動的把類名傳遞給類⽅法的第⼀個引數
View Code

3. 靜態方法. 不需要給方法傳遞self, 即出現一個方法不需要是使用成員變數的時候,選擇靜態方法 新增@staticmethod 類名.方法()
@staticmethod
    def fare():
    print("我的電腦⾮常⽜B, 可以煎雞蛋")
Computer.fare() # 類名可以直接訪問的
c.fare() # 物件也可以訪問. 但最好不要這麼⼲. 以便於區分靜態⽅法和例項⽅法
View Code
        屬性  @property
把方法轉化成屬性.
物件.屬性
    注意事項: 1.方法引數只能有一個self
         2.呼叫時不需要括號, 當屬性變數使用
         3. 需要有返回值
         4. 不能賦值
class User:
    def __init__(self, name, birthday, qq, email):
        self.name = name
        self.birthday = birthday
        self.qq = qq
        self.email = email

    # 方法
    @property # 可以把一個方法變成一個屬性
    def age(self):
        return 2018 - self.birthday
    '''
        @property
        1. 函式只能有一個self引數. 
        2. 需要有返回值
        3. 不能賦值
        4. 調⽤的時候, 我們不需要寫括號. 直接當成屬性變數來⽤就可以了
        
    '''
u = User("王明", 1994, 1024663304, "[email protected]")
print(u.age)
u.qq = 10010
u.age = 18
View Code

  私有 (在python中,一般不提倡設定和使用私有資訊)
__作為字首
在自己類中可以隨意訪問. 但是出了類任何人都不可以訪問這個私有內容
     但是通過公共方法可以訪問
訪問私有變數 訪問私有方法
訪問私有方法
class Person:
    def __init__(self):
        pass
    def __yue(self):
        print("我要約會")
    def job(self):
        print("我要⼯作")
        self.__yue() # 在⾃⼰類中訪問⾃⼰的其他⽅法. 哪怕是私有的. 也是⾃⼰在⽤
p = Person()
p.job()