ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何访问私有成员

2019-05-24 22:44:18  阅读:191  来源: 互联网

标签:__ obj 私有 成员 访问 Plane print captain


# ### 如何访问私有成员
class Plane():
	# 公有属性
	captain = "马军强"
	# 私有属性
	__air_sister = "20个"

	# 公有绑定方法
	def fly(self):
		print("飞机会飞")
	
	# 公有普通方法
	def fly2():
		print("飞机会飞2")
		
	# 私有的绑定方法
	def __oil_info(self):
		print("飞机百公里油耗是100升")
		
	# 私有的普通方法
	def __oil_info2():
		print("飞机百公里油耗是100升")
		
	# 公有的绑定方法
	def pub_info(self):
		print(self.__air_sister)
		self.__oil_info()
		
	# 公有的普通方法
	def pub_info2():
		print(Plane.__air_sister)
		Plane.__oil_info2()
		
		
# (1)如何访问类的私有成员?
'''
利用公有方法调用类内的私有成员
私有成员在本类之内可以随便调用,在本类之外不能调用
'''
# 实例化对象 方法一
obj = Plane()
obj.pub_info()

# 也可以使用类来调用 方法二
Plane.pub_info2()

# (2)如果就想直接在类外调用私有成员,有办法么?
'''
私有成员的改名策略:	
_类名 + 私有成员  (没有真正的私有化,类外可以通过改名策略仍然调取.)
'''
print("<===>")
print(obj._Plane__air_sister)
Plane._Plane__oil_info2()
	

# ### 如何删除成员
# (1)实例化的对象删除公有成员属性和方法
obj = Plane()
print(obj.__dict__)
print(obj.captain)
'''
captain 成员属性归属于class Plane的,不是obj的
obj可以有使用权,没有所有权(不能够修改或者删除类内的属性)
如果对象有该属性方法,先优先调用该对象里面的成员,
如果没有,在调用类中的成员属性和方法
如果都没有,直接报错.
'''
# 删除对象的属性
obj.captain = "熊卫华"
print(obj.__dict__)
print(obj.captain)
del obj.captain
print(obj.captain) # obj自己的captain 被删除了

# 删除对象的方法
print("<======>")
obj.fly111222 = lambda : print("我的飞机可以潜入海底")
obj.fly111222()
print(obj.__dict__)
# del obj.fly
# print(obj.__dict__)
	
	
# (2)定义的类删除公有成员属性和方法
'''
对象可以调用类中得公有成员属性方法
类不能调用对象的相关成员属性和方法
方向不可逆.
一个类可以产生多个对象,多个对象彼此之间,数据独立
'''
# 删除类的成员属性
# del Plane.captain
# print(Plane.captain)
# print(obj.captain)
# Plane.fly111222() error  类不能调用对象的方法

# 删除类的成员方法
# del Plane.pub_info
# Plane.pub_info() error  不存在

  

标签:__,obj,私有,成员,访问,Plane,print,captain
来源: https://www.cnblogs.com/huangjiangyong/p/10920558.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有