欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第7.9节 案例详解:Python类封装

程序员文章站 2024-03-16 10:18:52
...

上节介绍了Python中类的封装机制,本节结合一个具体例子进行详细说明。
我们定义一个Person类,其内部有姓名、年龄和类型三个实例变量,并定义了相关的存取方法:

class Person():
    def __type(self):
        if self._age<16: return '青少年'
        elif self._age<60: return '中年'
        else:return '老年'
        
    def __init__(self,name):self.name,_age,__persontype=name,0,'未知'
    def get_name(self,name):return self.name
    def set_age(self,age):
        self._age=age
        self.__persontype=self.__type()
    def get_age(self,age):return self._age
    def get_type(self):return self.__persontype


注意,其中实例变量_age年龄用的是一个下划线开头,实例变量__persontype类型是双下划线开头。定义完成后,我们执行如下代码定义两个人的实例,并设置年龄:

p1=Person('张三')
p2=Person('李莎')
p1.set_age(36)
p2.set_age(12)


同时沿用前面章节定义的函数dirp以去掉属性中的双下划线开头的变量和方法:

def dirp(iter): return [i for i in dir(iter) if not i.startswith('__')]
执行:dirp(p1)
输出结果:['_Person__persontype', '_Person__type', '_age', 'get_age', 'get_name', 'get_type', 'name', 'set_age']


可以看到:__persontype属性被变为了_Person__persontype,__type方法被变为了_Person__type,同时执行访问原属性的实例变量会报错。具体执行截图如下:
第7.9节 案例详解:Python类封装


本节结合具体案例了Python的封装机制,相信大家能完全理解,并在开发时都能遵守这些约定。
老猿Python(https://blog.csdn.net/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。
欢迎大家批评指正,谢谢大家关注!