zoukankan      html  css  js  c++  java
  • 如何访问私有成员

    # ### 如何访问私有成员
    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  不存在
    

      

  • 相关阅读:
    桃李春风一杯酒,江湖夜雨十年灯
    实现.net下的动态代理(续)多对象Mixin
    队列不存在,或您没有足够的权限执行该操作另一种原因
    .NET托管内存类应用的内存泄漏分析和诊断(转)
    移动硬盘 执行页内操作时的错误修复方法
    阮一峰:四位计算机的原理及其实现
    一款mvvm框架运用介绍(转)
    C#制作CAB压缩包压缩解压类
    ASP.NET C# 向 ACCESS 插入日期型数据 标准表达式中数据类型不匹配
    SQL Server日志清除的两种方法
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10920558.html
Copyright © 2011-2022 走看看