阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

python 类变量和实例变量

85次阅读
没有评论

共计 1053 个字符,预计需要花费 3 分钟才能阅读完成。

导读 类变量是在类空间中命名的,就是不加 self 的变量。

python 类变量和实例变量

因此,程序不能直接访问这些变量,必须通过类名 + 类变量来访问,不管是在全局范围内还是函数内访问这些类变量,都必须使用类名进行访问。

class Address:
    detail = "guangzhou"
    post_code = "510660"
    def info(self):
        #尝试直接访问类变量
        #print(detail) #报错

        #通过类类访问类变量
        print(Address.detail)
        print(Address.post_code)

#通过类来访问 Address 类的类变量
print(Address.detail)
addr = Address()
addr.info()
#修改 Address 类的类变量
Address.detail = "fushan"

Address.post_code = "460110"
addr.info()

实际上,python 完全允许使用实例(对象)来访问对象所属类的类变量(当然还是推荐使用类访问类变量)

class Record:

    #define two class variable
    item = "鼠标"
    date = "2016"
    def info(self):
        print("In info method :", self.item)
        print("In info method:",self.date)

rc = Record()
#也可以通过实例来访问类变量
print(rc.item)
print(rc.date)
rc.info()

实际上,程序通过对象访问类变量,其本质还是通过类名在访问类变量

由于通过对象访问类变量的本质还是类名在访问,因此如果类变量发生了改变,当程序访问这些类变量时也会读到修改之后的值

class Record:

    #define two class variable
    item = "鼠标"
    date = "2016"
    def info(self):
        print("In info method :", self.item)
        print("In info method:",self.date)

rc = Record()
#也可以通过实例来访问类变量
print(rc.item)
print(rc.date)
#由于通过对象访问类变量的本质还是类名在访问,因此如果类变量发生了改变,当程序访问这些类变量时也会读到修改之后的值
Record.item = "键盘"
Record.date = "2021"
rc.info()

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1053字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中