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

在Python中訪問(wèn)類變量和實(shí)例變量的方法

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

在 Python 中訪問(wèn)類變量和實(shí)例變量的核心規(guī)則是:類變量可通過(guò)「類名」或「實(shí)例名」訪問(wèn)(類名訪問(wèn)更精準(zhǔn)),實(shí)例變量?jī)H能通過(guò)「實(shí)例名」訪問(wèn)。下面分「訪問(wèn)場(chǎng)景」「具體語(yǔ)法」「易錯(cuò)點(diǎn)」三個(gè)維度講透,結(jié)合例子讓你快速掌握。

一、訪問(wèn)類變量的兩種方式

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

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

代碼示例:訪問(wèn)類變量

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

二、訪問(wèn)實(shí)例變量的唯一方式

實(shí)例變量屬于單個(gè)實(shí)例,因此只能通過(guò)「實(shí)例名」訪問(wèn),類名無(wú)法直接訪問(wèn)(實(shí)例變量是實(shí)例的 “私有屬性”)。

訪問(wèn)場(chǎng)景語(yǔ)法注意事項(xiàng)
類外部訪問(wèn)實(shí)例名.實(shí)例變量名必須先創(chuàng)建實(shí)例,否則報(bào)錯(cuò)
類內(nèi)部方法訪問(wèn)self.實(shí)例變量名self 代表當(dāng)前實(shí)例,是訪問(wèn)實(shí)例變量的唯一入口

代碼示例:訪問(wèn)實(shí)例變量

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

三、關(guān)鍵易錯(cuò)點(diǎn)與避坑指南

1. 實(shí)例訪問(wèn)類變量時(shí),若實(shí)例有同名變量會(huì) “遮蔽” 類變量

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

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

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

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

class Student:
    school = "北京大學(xué)"
    def wrong_access(self):
        self.school = "錯(cuò)誤值"  # 實(shí)際是給實(shí)例新增變量
        print(self.school)     # 輸出:錯(cuò)誤值(誤訪問(wèn)實(shí)例變量)
    def right_access(self):
        print(Student.school)  # 輸出:北京大學(xué)(精準(zhǔn)訪問(wèn)類變量)
stu = Student()
stu.wrong_access()
stu.right_access()

3. 不能通過(guò)類名訪問(wèn)實(shí)例變量,哪怕實(shí)例已存在

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

stu = Student("張三", 90)
# print(Student.name)  # 始終報(bào)錯(cuò):類無(wú)此屬性

四、訪問(wèn)規(guī)則總結(jié)表

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

最終總結(jié)

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

以上就是在Python中訪問(wèn)類變量和實(shí)例變量的方法的詳細(xì)內(nèi)容,更多關(guān)于Python訪問(wèn)類變量和實(shí)例變量的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

北辰区| 潍坊市| 顺平县| 屯昌县| 岑溪市| 黄浦区| 康马县| 南宫市| 新竹县| 扎囊县| 名山县| 淅川县| 白银市| 黑龙江省| 遵义市| 翁源县| 灵川县| 福海县| 延安市| 休宁县| 深水埗区| 黄平县| 东平县| 义乌市| 广宁县| 阿合奇县| 隆子县| 克什克腾旗| 石渠县| 海原县| 镶黄旗| 克山县| 广丰县| 永安市| 屯昌县| 前郭尔| 静乐县| 景谷| 镇原县| 屯留县| 太谷县|