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

本文探讨Python中属性的访问权限,包括公有、受保护和私有属性。虽然Python没有真正的私有化,但通过下划线可实现伪私有。公有属性可在类内外自由访问,而受保护的属性(前缀_)在子类和模块内访问会产生警告。私有属性(双下划线__)只能在类内部访问,其名字会被重整以防止外部直接访问和子类覆盖。文章还提供了一个私有属性应用示例,并提及了属性命名的下划线规范。
摘要由CSDN通过智能技术生成
  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 *
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中有访问权限的概念,可以通过使用双下划线(__)来定义私有属性和私有方法。私有属性和私有方法只能在类内部访问,无法在类外部直接访问。当我们尝试在类外部访问私有属性或私有方法时,会出现AttributeError的错误提示,如引用[1]所示。 然而,Python并没有严格的访问权限控制机制,因此仍然有一些方法可以访问私有属性和私有方法。其中,常用的方法有两种: 1. 为类增加一个公共方法来访问私有属性或私有方法。这是一种推荐的方法,通过在类中定义公共方法来访问私有属性或私有方法。在公共方法内部,可以直接访问私有属性或私有方法。这样,在类外部就可以通过调用公共方法来间接地访问私有属性或私有方法。这种方法可以保持封装性和安全性,如引用[2]所示。 2. 使用"实例名._类名__变量名"的方式来访问私有属性或私有方法。在Python中,私有属性或私有方法会被重命名,以避免与子类中的同名属性或方法冲突。私有属性或私有方法的名称会被改为"_类名__变量名"的形式。通过使用这种方式,可以在类外部直接访问私有属性或私有方法。但是需要注意的是,这种方式不被推荐使用,因为它违背了封装的原则,破坏了类的封装性,如引用[3]所示。 总结起来,Python中的访问权限可以通过定义私有属性和私有方法来实现。虽然无法直接在类外部访问私有属性和私有方法,但可以通过增加公共方法或使用特定的命名规则来间接或直接访问私有属性和私有方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值