版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41402059/article/details/82670305
广义的封装:代码的保护,面向对象的思想本身就是一种封装,只让自己的对象能调用自己类的方法
狭义的封装:把属性和方法都藏起来,对外部不可见
私有属性:__name
私有方法:__func()
私有属性和私有方法不能在外部调用
私有属性和私有方法只有本类可以调用
内部装饰器函数:圆的面积需要经过计算,但面积应该是类的属性,使用@property将类方法伪装成属性
class Person(object):
"""docstring for Person"""
def __init__(self, name):
super(Person, self).__init__()
self.__name = name
@property
def hello(self):
return self.__name + ' 你好'
@hello.setter
def hello(self, new_name):
self.__name = new_name
p = Person('test1')
print(p.hello) # test1 你好
p.hello = 'test2'
print(p.hello) # test2 你好