python类变量和实例变量-Python教程

资源魔 42 0
咱们晓得,无论是正在类中界说的属性仍是办法,正在类的内部,都无奈间接挪用它们,因而,咱们齐全能够把类看作是一个自力的作用域(称为类定名空间),则类属性其实就是界说正在类定名空间内的变量(类办法其实就是界说的类定名空间中的函数)。

依据界说属性的地位没有同,类属性又可细分为类属性(后续用类变量示意)以及实例属性(后续用实例变量示意)。

类变量(类属性) (保举学习:Python视频教程)

类变量指的是界说正在类中,但正在各个类办法外的变量。类变量的特性是:一切类的实例化工具均可以同享类变量的值,即类变量能够正在一切实例化工具中作为专用资本。

留意,类变量保举间接用类名拜访,但也能够应用工具名拜访。

例如,上面代码界说了一个 Address 类,并为该类界说了多个类属性:

class Address :
    detail = '广州'
    post_code = '510660'
    def info (self):
        # 测验考试间接拜访类变量
        #print(detail) # 报错
        # 经过类来拜访类变量
        print(Address.detail) # 输入 广州
        print(Address.post_code) # 输入 510660
#创立 2 个类工具
addr1 = Address()
addr1.info()
addr2 = Address()
addr2.info()
# 修正Address类的类变量
Address.detail = '佛山'
Address.post_code = '460110'
addr1.info()
addr2.info()

该顺序中,第2、三行代码为 Address 界说了两个类变量。当顺序中第一次挪用 Address 工具的 info() 办法输入两个类变量时,将会输入这两个类变量的初始值。接上去顺序经过 Address 类修正了两个类变量的值,因而当顺序第二次经过 info() 办法输入两个类变量时,将会输入这两个类变量修正之后的值。

运转下面代码,将会看到以下输入后果:

广州
510660
广州
510660
佛山
460110
佛山
460110

经过输入后果能够看到,addr1 以及 addr2 同享类变量,换句话说,扭转类变量的值会作用于该类一切的实例化工具。

实例变量指的是界说正在类的办法中的属性,它的特性是:只作用于挪用办法的工具。

留意,实例变量只能经过工具名拜访,无奈经过类名间接拜访。

Python 容许经过工具拜访类变量,但无奈经过工具修正类变量的值。由于,经过工具修正类变量的值,没有是正在给“类变量赋值”,而是界说新的实例变量。

例如以下顺序:

class Inventory:
    # 界说两个类变量
    item = '鼠标'
    quantity = 2000
    # 界说实例办法
    def change(self, item, quantity):
        # 上面赋值语句没有是对类变量赋值,而是界说新的实例变量
        self.item = item
        self.quantity = quantity
# 创立Inventory工具
iv = Inventory()
iv.change('显示器', 500)
# 拜访iv的item以及quantity实例变量
print(iv.item) # 显示器
print(iv.quantity) # 500
# 拜访Inventory的item以及quantity类变量
print(Inventory.item) # 鼠标
print(Inventory.quantity) # 2000

下面顺序中,第 八、9 行代码经过实例对 item、quantity 变量赋值,看下来很像是对类变量赋值,但并非,它们的作用是:从新界说了两个实例变量。

类中,实例变量以及类变量能够同名,然而正在这类状况下,应用类工具将无奈挪用类变量,由于它会首选实例变量,因而这也是没有保举“类变量应用工具名挪用”的缘由。

下面顺序正在挪用 Inventory 工具的 change() 办法之后,拜访 Inventory 工具的 item、quantity 变量,因为该工具自身己有这两个实例变量,因而顺序将会输入该工具的实例变量的值;接上去顺序经过 Inventory 拜访它的 item、quantity 两个类变量,此时才是真的拜访类变量。

运转下面顺序,将看到以下输入后果:

显示器
500
鼠标
2000

以上就是python类变量以及实例变量的具体内容,更多请存眷资源魔其它相干文章!

标签: Python python教程 python编程 python使用问题

抱歉,评论功能暂时关闭!