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