文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python私有属性和方法怎么获取

2024-04-02 19:55

关注

今天小编给大家分享一下python私有属性和方法怎么获取的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一般来说,私有属性和方法无法从外部直接获得,也不能继承

注:私有属性和方法就是在前加上两道下划线

class A:
	# 原属性
	aa = 1
	# 私有属性
	__bb = 2
	
	# 初始化
	def __init__(self, num1, num2):
		self.num1 = num1
		self.num2 = num2
	
	# 普通方法
	def get_func(self):
		return self.num1
	
	# 私有方法
	def __get_num2(self):
		return self.num2
	

obj = A(10, 20)
# 访问公有属性
print(obj.aa)
# 访问私有属性  -- 结果报错
print(obj.bb)
# 访问公有方法
print(obj.get_public_num())
# 访问私有方法  -- 结果报错
print(obj.__get_private_num())
>>>print(obj.aa) # 访问公有属性
>>>1
>>>print(obj.bb) # 访问私有属性  -- 结果报错
>>> AttributeError: 'A' object has no attribute 'bb'
>>># 访问公有方法
>>>10
>>>print(obj.__get_private_num()) # 访问私有方法  -- 结果报错
>>>AttributeError: 'A' object has no attribute '__get_private_num'

可以看到二者的变化,私有属性和方法无法通过原有方法从实例对象处获得

但是你觉得这样就真的安全了吗?

答案是否定的,有一件事我们要明白: ==没有绝对安全的语言==

为什么,让我们换个访问方法访问,来看下面这个例子:

>>> print(obj._A__get_private_num())
>>> 20

结果显示,通过

实例对象._当前类名__属性/方法

的方法我们可以从外部实例对象处获取到私有属性和方法,值得一提的是,即使是继承的子类也是可以的。

这反映出在语言层面来讲没有绝对的安全,只是python的突破方法比较简单而已。但一般设计者往往会在类中添加一些方法来查看和修改私有属性与方法,按照规范,查看私有属性的方法多命名为 get_xx( ), 修改私有属性的方法多命名为 set__xx()

以上就是“python私有属性和方法怎么获取”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯