最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Python中訪問類變量和實例變量的方法

 更新時間:2026年05月27日 09:35:23   作者:冰小憶  
這段文章詳細解釋了在Python中訪問類變量和實例變量的規(guī)則,包括通過類名實例名訪問變量的方式、注意事項及易錯點,關鍵點在于類變量可通過類名實例名訪問,而實例變量僅能通過實例名訪問,避免遮蔽問題和類內訪問錯誤,需要的朋友可以參考下

在 Python 中訪問類變量和實例變量的核心規(guī)則是:類變量可通過「類名」或「實例名」訪問(類名訪問更精準),實例變量僅能通過「實例名」訪問。下面分「訪問場景」「具體語法」「易錯點」三個維度講透,結合例子讓你快速掌握。

一、訪問類變量的兩種方式

類變量屬于類本身,因此有兩種合法訪問方式,核心區(qū)別是「是否依賴實例」。

訪問方式語法適用場景優(yōu)點
通過類名訪問類名.類變量名任何場景(推薦優(yōu)先使用)直接訪問類變量本身,無歧義
通過實例名訪問實例名.類變量名已有實例,且無需修改類變量時便捷,與實例變量訪問語法統(tǒng)一

代碼示例:訪問類變量

class Student:
    # 定義類變量
    school = "北京大學"
    count = 0
    def __init__(self, name):
        # 定義實例變量
        self.name = name
        Student.count += 1  # 類內部通過類名訪問類變量(推薦)
# 1. 類外部通過類名訪問(最推薦,無實例也能訪問)
print(Student.school)  # 輸出:北京大學
print(Student.count)   # 輸出:0(還未創(chuàng)建實例)
# 2. 創(chuàng)建實例后,通過實例訪問類變量
stu1 = Student("張三")
print(stu1.school)     # 輸出:北京大學(實例共享類變量)
print(stu1.count)      # 輸出:1(類變量已被__init__修改)
# 3. 類內部的方法中訪問類變量
class Student:
    school = "北京大學"
    # 實例方法中訪問類變量
    def print_school(self):
        print("實例方法訪問:", Student.school)  # 類名訪問(推薦)
        # 也可通過self訪問(等價于self.__class__.school)
        print("self訪問類變量:", self.school)
    # 類方法中訪問類變量(推薦用cls)
    @classmethod
    def change_school(cls, new_school):
        cls.school = new_school
        print("類方法訪問:", cls.school)  # cls等價于類名
    # 靜態(tài)方法中訪問類變量(只能用類名)
    @staticmethod
    def static_print():
        print("靜態(tài)方法訪問:", Student.school)
stu = Student("李四")
stu.print_school()       # 實例方法訪問類變量
Student.change_school("清華大學")  # 類方法訪問/修改類變量
Student.static_print()   # 靜態(tài)方法訪問類變量

二、訪問實例變量的唯一方式

實例變量屬于單個實例,因此只能通過「實例名」訪問,類名無法直接訪問(實例變量是實例的 “私有屬性”)。

訪問場景語法注意事項
類外部訪問實例名.實例變量名必須先創(chuàng)建實例,否則報錯
類內部方法訪問self.實例變量名self 代表當前實例,是訪問實例變量的唯一入口

代碼示例:訪問實例變量

class Student:
    def __init__(self, name, score):
        # 定義實例變量
        self.name = name
        self.score = score
    # 類內部訪問實例變量(必須用self)
    def print_info(self):
        print(f"姓名:{self.name},分數(shù):{self.score}")
# 1. 類外部訪問實例變量(先創(chuàng)建實例)
stu1 = Student("張三", 90)
print(stu1.name)   # 輸出:張三
print(stu1.score)  # 輸出:90
# 2. 類內部通過self訪問實例變量
stu1.print_info()  # 輸出:姓名:張三,分數(shù):90
# 3. 錯誤示例:類名無法訪問實例變量
# print(Student.name)  # 報錯:AttributeError: type object 'Student' has no attribute 'name'
# 4. 不同實例的實例變量獨立訪問
stu2 = Student("李四", 85)
print(stu2.name)   # 輸出:李四(與stu1的name互不干擾)

三、關鍵易錯點與避坑指南

1. 實例訪問類變量時,若實例有同名變量會 “遮蔽” 類變量

實例訪問實例名.變量名時,Python 會優(yōu)先查找實例自身的變量,找不到才會找類變量。若實例有同名變量,會遮蔽類變量(看似 “訪問類變量”,實際訪問的是實例變量):

class Student:
    school = "北京大學"
stu = Student()
stu.school = "復旦大學"  # 給實例新增同名變量
print(stu.school)       # 輸出:復旦大學(訪問的是實例變量,而非類變量)
print(Student.school)   # 輸出:北京大學(類變量未變)

2. 類內部訪問類變量:優(yōu)先用類名 /cls,而非 self

在實例方法中用self.類變量名訪問時,若實例有同名變量,會誤訪問實例變量。推薦用類名.類變量名(或self.__class__.類變量名):

class Student:
    school = "北京大學"
    def wrong_access(self):
        self.school = "錯誤值"  # 實際是給實例新增變量
        print(self.school)     # 輸出:錯誤值(誤訪問實例變量)
    def right_access(self):
        print(Student.school)  # 輸出:北京大學(精準訪問類變量)
stu = Student()
stu.wrong_access()
stu.right_access()

3. 不能通過類名訪問實例變量,哪怕實例已存在

實例變量是實例的屬性,類名無法感知具體實例,因此無論是否創(chuàng)建實例,類名都不能訪問實例變量:

stu = Student("張三", 90)
# print(Student.name)  # 始終報錯:類無此屬性

四、訪問規(guī)則總結表

變量類型合法訪問方式非法訪問方式核心提醒
類變量1. 類名。類變量名2. 實例名。類變量名無(兩種方式都合法)實例訪問時注意同名遮蔽問題
實例變量1. 實例名。實例變量名2. 類內 self. 實例變量名類名。實例變量名只能通過實例 /self 訪問,類名不行

最終總結

  • 訪問類變量:優(yōu)先用類名.類變量名(精準無歧義),實例僅在 “無同名變量” 時可臨時用實例名.類變量名;
  • 訪問實例變量:唯一合法方式是實例名.實例變量名(類外)或self.實例變量名(類內),類名訪問必報錯;
  • 核心原則:“誰的屬性找誰要”—— 類變量找類,實例變量找實例。

以上就是在Python中訪問類變量和實例變量的方法的詳細內容,更多關于Python訪問類變量和實例變量的資料請關注腳本之家其它相關文章!

相關文章

最新評論

长白| 吉首市| 嘉荫县| 台东市| 上饶市| 东阳市| 抚顺县| 尼勒克县| 凉城县| 牙克石市| 昌平区| 宜良县| 同心县| 孝昌县| 奉贤区| 高台县| 太和县| 富川| 禄丰县| 宜都市| 屯留县| 南澳县| 庆云县| 新疆| 黑河市| 旺苍县| 清河县| 镇平县| 措美县| 万全县| 锡林浩特市| 临湘市| 永德县| 南和县| 大同县| 瑞丽市| 班玛县| 大埔区| 牡丹江市| 安远县| 新蔡县|