封装
封装
在面向对象的语言中,封装就是用类将数据和基于数据的操作封装在一起,隐藏内部数据,对外提供公共的访问接口。(可以总结成一句话:合理隐藏,合理暴露)
其实之前学习的函数本质上也是一种封装,将实现的代码细节封装起来,调用相应的函数就可以完成想完成的事情。
类本身也是一种封装。
代码
#!/usr/bin/env python
#object是祖宗类,就算不写,也会默认继承
class Dog(object):
def __init__(self,name):
self.name = name
def get_name(self):
return self.name
def set_name(self,value):
self.name = value
def sound_bark(self):
print(self.get_name() + " is making sound wangwangwang")
class Cat(object):
def __init__(self,name):
self.name = name
def get_name(self):
return self.name
def set_name(self,value):
self.name = value
def sound_mew(self):
print(self.get_name() + " is making sound miaomiaomiao")
dog = Dog("wangcai")
cat = Cat("jiafei")
dog.get_name()
dog.sound_bark()
cat.get_name()
cat.sound_mew()
dog.set_name("erha")
print(dog.get_name())
运行结果
┌──(root㉿kali)-[~/python_code/python_3]
└─# python Animal.py
wangcai is making sound wangwangwang
jiafei is making sound miaomiaomiao
erha
使用get_name()获取名字,set_name()设置名字,从始至终属性name没有暴露过,可以进一步思考如果属性方法封装不好会出现哪些漏洞?还有封装的好处是什么?
浙公网安备 33010602011771号