python類屬性和實例屬性(類變量和實例變量)


在類中,根據變量定義的位置不同,以及定義的方式不同,類屬性又可以細分為以下三種類型:

  1. 類體中,所有函數之外:類屬性(類變量)
  2. 類體中,所有函數內部,以“self.變量名”的方式定義的變量:實例屬性(實例變量)
  3. 類體中,所有函數內部,以“變量名 = 變量值”的方式定義的變量:局部變量

1.類變量

所有類的實例化對象都同時共享類變量。類變量的調用方法有兩種,既可以使用類名直接調用,也可以使用類的實例化對象調用(此方法不推薦使用)。

class Person:
    name = "xiaobai"
    age = 10
    def __init__(self, name, age):
        self.name = name
        self.age = age
#使用類名直接調用
print(Person.name)
print(Person.age)
#通過類名修改類變量的值
Person.name = "lilei"
Person.age = 20
print(Person.name)
print(Person.age)
#執行結果
xiaobai
10
lilei
20

2.實例變量

只作用於調用方法的對象。實例變量只能通過對象名訪問,無法通過類名訪問。

class Person:
    def __init__(self):
        self.name = "xiaobai"
        self.age = 10
    def say(self):
        self.content = "i love python"
#name、age以及content都是實例變量。Person類的類對象都會包含name和age實例變量,只有調用了say()方法的類對象才會包含content實例變量。
mary = Person()
print(mary.name)
print(mary.age)
mary.say()
print(mary.content)
#執行結果
xiaobai
10
i love python
實例變量和類變量可以同名,但這種情況下使用類對象無法調用類變量,它會首選實例變量。
class Person:
    name = "lilei"
    def __init__(self):
        self.name = "xiaobai"
        self.age = 10
    def say(self):
        self.content = "i love python"
mary = Person()
print(mary.name)
#執行結果
xiaobai

3.局部變量

局部變量只能用於所在函數中,函數執行完成后,局部變量也會被銷毀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM