zoukankan      html  css  js  c++  java
  • 面相对象编程 扩充之封装、访问机制、 property

    封装:

    封装指的是可以将一堆属性和方法,封装到对象中

    ps : 对象就好比一个 “袋子/容器”, 可以存放一堆属性和方法

    ps : 存不是目的,目的是为了取,可以通过“对象” d的方式获取属性或方法

    为什么要封装:

    可以通过“对象”的方式 “存放/获取” 属性或方法

    对象拥有 "." 的机制

    方便数据的存取

    如何封装:

    class User:
        x = 10
        def func()
        	pass
    obj = User
    obj.y = 20 
    obj ---> x, func, y 
    

      

    访问机制:

    什么是访问机制:

    凡是在类内部定义的属性或方法

    以__ 开头的属性或方法,都会被限制,外部不能 "直接访问" 该属性原型

    PS:看着像该属性或方法隐藏起来了

    #python 特有的:

    凡是在类内部定义__ 开头的属性或方法,都会变成——类名—— 属性/方法

    为什么要用访问机制:

    可以对一些隐私信息进行保护

    如何实现:

    class User:
        __name = 'tank'  # __name 变形为--> __类名__name  
        def _run(self):
            print('sean is running...')

    property

    property :一个python内置的装饰器,可以装饰在"类内部方法上"

    可以将该方法调用方式由 对象.方法() ----> 对象.方法

    为什么要用property:

    ps: 在某些场景下,调用的方法只是用来获取计算后的某个值

    ps : 必须通过 对象.方法() 方式调用,让该方式看起来像动词、

    让名词的方法,调用时更为合理

    目的是为了,迷惑调用者,调用的方法误以为是 属性

    class User:
        def __init__(self, name, weight, height):
            self.name = name
            self.weight = weight
            self.height = height
        @property
        def dim(self):
            return self.weight / (self.height ** 2)
    
        # @property
        # def name(self):
        #     return self._name
    user_obj = User('WC', 75, 1.4)
    user_obj.dim
    print(user_obj.dim)

     

  • 相关阅读:
    Linux查看进程和已知端口是否启动
    plsql安装
    windows中用批处理文件删除n天前的文件
    阿里云服务器25邮件端口问题
    通过rpm安装crontab
    [RHEL7.1]关闭防火墙及SElinux
    有了 itchat, python 调用微信个人号从未如此简单(新增 py3 支持)
    Linux中tty、pty、pts的概念区别
    不用写代码就能实现深度学习?手把手教你用英伟达 DIGITS 解决图像分类问题
    Hadoop 2.7.3 安装配置及测试
  • 原文地址:https://www.cnblogs.com/127-2933/p/11944679.html
Copyright © 2011-2022 走看看