Python基础(二十二): 属性的访问权限

本文探讨Python中属性的访问权限,包括公有、受保护和私有属性。虽然Python没有真正的私有化,但通过下划线可实现伪私有。公有属性可在类内外自由访问,而受保护的属性(前缀_)在子类和模块内访问会产生警告。私有属性(双下划线__)只能在类内部访问,其名字会被重整以防止外部直接访问和子类覆盖。文章还提供了一个私有属性应用示例,并提及了属性命名的下划线规范。
  1. 属性的访问权限: 公有属性、受保护的属性、私有属性
  2. Python中并没有真正的私有化支持, 但是可以使用下划线, 完成伪私有的效果

一、公有属性

  • 公有属性
* 类内部访问
* 子类内部访问
* 模块内其他位置: 父类, 派生类, 父类实例, 派生类实例
* 跨模块访问: import, from 模块 import *
复制代码
1、类内部访问
class Animal:
    name = "旺财"
    def call(self):
        print(Animal.name)
        print(self.name)
a = Animal()
a.call()
# 打印结果:
旺财
旺财
复制代码
2、子类中访问
class Animal:
    name = "旺财"
    
class Dog(Animal):
    def call(self):
        print(Dog.name)
        print(self.name)
d = Dog()
d.call()
# 打印结果:
旺财
旺财
复制代码
3、模块内其他位置访问
  • 父类, 派生类
class Animal:
    name = "旺财"
    
class Dog(Animal):
    pass
    
print(Animal.name)
print(Dog.name)
# 打印结果:
旺财
旺财
复制代码
  • 父类实例, 派生类实例
class Animal:
    name = "旺财"
    
class Dog(Animal):
    pass

a = Animal()
d = Dog()
print(a.name)
print(d.name)
# 打印结果:
旺财
旺财
复制代码
4、跨模块访问类的属性
  • 在其他模块中导入使用, 假设本模块名字为Module

  • import 模块名

import Module
pirnt(Module.Animal.name)       # 打印: 旺财
复制代码
  • from 模块名 import *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值