• python 类的封装


    封装:即在设计类时,刻意的将一些属性和方法隐藏在类的内部,这样将无法直接以"类对象.属性名"(或者"类对象.方法名(参数)")的形式调用这些属性(或方法),而只能用未隐藏的方法间接的操作这些隐藏的属性和方法。

    1. 封装机制保证了类内部数据结构的完整性,很好的避免了外部对内部数据的影响,提高了程序的可维护性。
    2. 避免用户对类中属性或方法进行不合理的操作。
    3. 提供代码的复用性。

    python类如何进行封装
    不同于其他面向对象的编程语言,python类中的变量和函数不是共有的就是私有的。

    1. public:公有属性的类变量和类函数,在类的外部、类内部以及子类中,都可以正常访问
    2. private:私有属性的类变量和类函数,只有在本类内部使用,类的外部以及子类都无法使用。

    但是,python并没有提供public、private这些修饰符。为了实现类的封装,python采取了下面的方法:

    1. 默认情况下,python类中的变量和方法都是公有的,它们的名称前都没有下划线(_)
    2. 如果类中的变量和函数,其名称以双下划线“__”开头,则该变量或函数为私有的。
    3. 以单下划线“_”开头的类属性和类方法约定俗成的被视为私有属性和私有方法,虽然它们也能通过类对象正常访问,但是建议不要这样。
    4. 以双下划线开头和结尾的类方法(如__init__())时python内部定义的,自己定义时,不要使用这种格式。
    class Person:
        def setname(self, name):
            if len(name) < 3:
                raise ValueError('名称长度必须大于3!')
            self.__name = name
            
        def getname(self):
            return self.__name
        
        #为name配置setter和getter方法
        name = property(getname, setname)
        
        def setage(self, age):
            if age < 100:
                self.__age = age
            else:
                raise ValueError('年龄必须小于100!')
        
        def getage(self):
            return self.__age
        
        #为age配置getter和setter方法
        age = property(getage, setage)
        
        #定义私有方法
        def __display(self):
            print(self.__name, "今年", self.__age, "岁。")
            
    xiaobai = Person()
    xiaobai.name = "xiaobai"
    xiaobai.age = 20
    print(xiaobai.name)
    print(xiaobai.age)
    
    xiaobai
    20
    
  • 相关阅读:
    【原】Ubuntu13.04安装、卸载Gnome3.8
    【原】安装、卸载、查看软件时常用的命令
    【原】中文Ubuntu主目录下的文档文件夹改回英文
    【原】Ubuntu ATI/Intel双显卡 驱动安装
    【转】Hadoop vs Spark性能对比
    【译】Spark调优
    【转】Spark源码分析之-scheduler模块
    【转】Spark源码分析之-deploy模块
    【转】Spark源码分析之-Storage模块
    【转】弹性分布式数据集:一种基于内存的集群计算的容错性抽象方法
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12227501.html
Copyright © 2020-2023  润新知