# _name,只是约定不让外部访问,其实还是可以用._name访问 # __name,也只是约定并且更改访问属性名,其实也还是可以访问,用_Foo__age访问 # eg: class Foo: __age=18 def __init__(self,name): self.name=name f1=Foo('alex') print(f1.__dict__) print(Foo.__dict__) print(f1._Foo__age) #比较严谨封装的方法 class Room: def __init__(self,owner,width,length): self.owner=owner self.__width=width self.__legth=length def tell_area(self): return self.__legth * self.__width def get_width(self): #如果封装的变量后面外部想调用则必须写接口函数 return self.__width r1=Room('alex',10,20) print(r1.owner) print(r1.get_width()) print(Room.__dict__)