博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类的封装
阅读量:5069 次
发布时间:2019-06-12

本文共 1264 字,大约阅读时间需要 4 分钟。

类的封装:

    针对的源码,保护代码的安全

 狭义的封装:私有化

广义的封装:把方法和属性根据类别封装到类中

 

私有化: 

1:将方法私有化

def__函数名()

2.将静态变量私有化

 __静态变量

3.将对象的属性私有化

  self.__变量=参数

 

注:  私有化都是在内部完成的,在内部可以调用被私有化的对象,但是在类的外部都不可以使用

      私有化只是改变了被私有化的名称,使用      对象名.__dict__    查看名称    

     self.__name   变成了   _类名__name

       私有的所有内容不可以被继承

  注:

    self.name 和self.__name是不同的变量可以共存

 

装饰器

1  @property

如果我们定义的是普通的变量或者属性     那么这个属性可以从外部直接访问     可以任意的修改 obj.attr = 123     甚至可以删除 del obj.attr 私有化     把一个属性加上双下划线 __属性名     这个属性就连在外面看都看不见了     我们实际上有些场景允许别人看,不许改         __属性         @property装饰的属性名         def 属性():     我们允许别人看,也允许别人改,但是不能瞎改,有一些要求:数据类型 范围         __属性         @property装饰的属性名         def 属性():return __属性         @属性.setter         def 属性(self,value):             加点儿条件             修改__属性
私有的 :通过过给__名字这样的属性或者方法加上当前所在类的前缀,把属性隐藏起来了         只能在本类的内部使用,不能在类的外部使用,不能被继承 property 把一个方法伪装成属性 property和私有的两个概念一起用     定义一个私有的     再定义一个同名共有的方法,被property装饰     @方法名.setter     @方法名.deleter

 

2@classmethod

类方法     1. 有些时候我们要修改的是类中的静态变量/类变量     此时根本不会和self有任何的操作关联     这时传一个self参数对我们来说完全没有用     我们希望接受的是当前我们所在的类 类方法推荐使用类名调用而不是使用对象名调用

3@staticmethod

class A:     @staticmethod  # 声明这个方法只是一个普通的不会使用任何和这个类中的变量相关的方法     def func():    # 此时 func是一个静态方法         print('既不操作和self相关的内容')         print('也不操作和类名相关的内容') A.func()

转载于:https://www.cnblogs.com/zlyboke/p/10634417.html

你可能感兴趣的文章
日志框架--(一)基础篇
查看>>
关于源程序到可运行程序的过程
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
自定义tabbar(纯代码)
查看>>
小程序底部导航栏
查看>>
poj1611 简单并查集
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
css3动画属性
查看>>