一、
封装 :把一些属性和方法放到类里 这本身就是一种封装
封装 : 把属性和方法藏在类里 我只能在类内部调用,不能再外部使用
要想变成私有变量,只需要把变量名前加上__(双下划线),外部则不能调用,若要调用用_类名__变量名 来调用(不提倡这样)
呐:
classDog:
__role = 'dog'#私有的静态属性
def__discount(self):#私有的方法
print('in __func')
defprice(self):
self.__discount()
print(Dog.__dict__) # 里面含{...'_Dog__role': 'dog',...}
print(Dog._Dog__role) # dog
d = Dog()
d.__discount() # 报错
d._Dog__discount() #in __func
N
定义一个私有变量\属性\方法 : __名字
在类的内部可以直接用 : __名字
在类的外部不能直接使用,如果一定要用,在私有方法之前加上:_类名,变成 _类名__名字
在类外的名字 通过__dict__就可以查看
应用实例:
classRoom:
def__init__(self,name,price,length,width):
self.name = name
self.price = price
self.__length =length #私有的对象属性
self.__width = width
defarea(self):
returnself.__length*self.__width
house = Room('小超超',1000000,2,1) # 努努力,厕所变墓地
print(house.area()) # 2
错误小方法:
classA:
def__func(self): # _A__func
print('__a_func')
classB(A):
def__init__(self):
self.__func() # _B__func
b = B() # 报错,找不到
Na:
私有的:
①私有的静态属性、方法、对象属性
②使用__名字的方式调用,保证在类内部可以调用,外部不行
③不能被继承
④当有一个名字,不想被外部使用也不想被子类继承,只想在内部使用的时候就定义私有的
像我这样的人 --- 毛不易