zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    传值,传引用?一切都是传地址
    前端神器sublime
    PHP中文乱码的常见解决方法总结
    css mainDiv和popbox居中
    中文系统 上传file的input显示英文
    css 任何元素都可以加背景图
    xpath的简明语法
    JQuery技巧总结
    当工作和爱情不如意的时候...
    微软2008年将发布的产品全表
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12227501.html
Copyright © 2011-2022 走看看