zoukankan      html  css  js  c++  java
  • 第7.9节 案例详解:Python类封装

    上节介绍了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,同时执行访问原属性的实例变量会报错。具体执行截图如下:


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

  • 相关阅读:
    详说清除浮动
    ie7 z-index 失效问题
    ul里不能直接嵌套div(在ie7以前版本)
    jQuery 发送验证码倒计时按钮
    VBA: Cant find project or librar
    InstallShield Limited Edition制作安装文件
    InstallShield制作升级安装包
    VBA 获取Sheet最大行
    求两条线段交点zz
    VBA找不到progress bar的处理办法。
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11087705.html
Copyright © 2011-2022 走看看