zoukankan      html  css  js  c++  java
  • python 封装底层实现原理

    事实上,python封装特性的实现纯属“投机取巧”,之所以类对象无法直接调用私有方法和属性,是因为底层实现时,python偷偷改变了它们的名称。

    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
    #直接调用隐藏的display()方法
    xiaobai._Person__display()
    
    xiaobai 今年 20 岁。
    

    总结:python类中所有的属性和方法,都是公有的,如果希望python底层修改类属性或者类方法的名称,以此将它们隐藏起来,只需将它们的名称前添加双下划线("__")即可。

  • 相关阅读:
    iOS 方便的宏定义
    IOS 推送消息 php做推送服务端
    iOS 7 动画UIDynamicAnimator
    iOS 适配
    ios 实现简单的解析xml网页
    用 MPMoviePlayerController 实现简单的视频下载播放功能
    ios 自定义弹出对话框效果
    ios国外大神
    git学习
    ios 7UI适配方法
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12227534.html
Copyright © 2011-2022 走看看