python--面向对象封装
from collectoins import namedtuple
Point=namedtuple('point',['x','y'])
t1=Point(1,2)
print(t1.x)
print(t1.y)
没有方法的类属性不会发生变化
定义简单
不能改变
面向对象封装
私有属性!!!
私有方法!!!
用装饰器描述的几个方法
@property !!!
@classmethod!!
@staticmethod!
封装
class Teacher:
def __init__(self,name,pwd):
self.name=name
self.pwd=pwd
alex=Teacher('alex','')
print(alex.pwd) #这样不安全
定义一个私有属性:
self.__pwd=pwd
这样pwd就变成了私有属性
只能自己的类里面用方法用:
def func(self):
print(self.__pwd)
这样在类自己的方法里可以用
方法也可以私有化
同样
可以在实例化的时候直接调用方法,在里面self.方法()
还有私有静态属性
如果想要调用的话_类名__方法、静态属性、属性
只能在内部进行私有属性、私有方法、私有静态属性的定义
利用私有属性和私有方法进行密码加密:
class Teacher:
def __init__(self,name,__pwd):
self.name=name
self.__pwd=__pwd
def __p(self):
return hash(self.__pwd)
def oi(self,pwd):
return hash(pwd)==self.__p()
so=Teacher('alex',2222)
ret=so.oi(2221)
print(ret)
什么时候会用到私有方法
1.有一些方法只是用来作为中间结果
2.父类的方法不希望子类继承
私有属性用法例子:
class Person:
def __init__(self,height,weight):
self.__height=height
self.__weight=weight
def jisuan(self):
return self.__weight/(self.__height*self.__height)
def change(self,new,neww):
if neww >20:
self.__weight=neww
self.__height=new
else:
print('体重过轻')
jing=Person(1.70,52)
print(jing.jisuan())
jing.change(1.65,42)
@property 把一个方法伪装成属性,直接加在方法上面,调用的时候就是属性了
class Fang:
def __init__(self,name,chang,kuan):
self.name=name
self.__chang=chang
self.__kuan =kuan
@property
def get_1(self):
return self.name,self.__chang*self.__kuan
jing=Fang('jing',55,22)
print(jing.get_1)
@方法名.setter 修改函数伪装成的属性的值
def 方法名(self,zhi):
self.变量名=zhi
私有方法是不可以被子类继承的
方法@staticmethod
类里面的方法就可以不传参数了
不能将函数独立的放在类外面 完全使用面向对象编程的时候
并且这个函数完全不需要依赖对象的属性和类的属性
就可以用staticmethod装饰这个函数
静态方法:没有必须传的参数 方法不需要用对象的属性和类的属性
普通方法:必须穿一个对象 可以使用对象的属性和类的属性
类方法:必须传一个类,方法不需要使用对象的属性,但可以使用类的属性
@classmethod 里面传cls
python--面向对象封装的更多相关文章
- python面向对象(封装,继承,多态)
python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...
- python面向对象封装案例(附:is和==的区别)
面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...
- python面向对象-封装-property-接口-抽象-鸭子类型-03
封装 什么是封装: # 将复杂的丑陋的隐私的细节隐藏到内部,对外提供简单的使用接口 或 # 对外隐藏内部实现细节,并提供访问的接口 为什么需要封装 1.为了保证关键数据的安全性 2.对外部隐藏内部的实 ...
- Python—面向对象 封装03
接着上面的一篇继续往下: 如何隐藏 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) class A: __x = 1 # _A__x = 1 def __init__(self, ...
- Python面向对象封装案例
01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 ...
- python面向对象封装案例2
封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类 ...
- python面向对象(封装、多态、反射)
目录 面向对象之封装 @property 面向对象之多态 面向对象之反射 面向对象之封装 含义 将类中的某些名字按照特殊的书写方式"隐藏"起来,不让外界直接调用,目的是为了不然外界 ...
- python面向对象-封装and多态
python 接口类和抽象类 为什么讲封装之前要将这个东西? 我才不会说为什么 首先: python没有接口类这个概念!!!!!!!! 哈哈哈......神经病 python抽象类和接口类更接近于一种 ...
- Python面向对象----封装
1. Python语言不是强类型语言, 公有和私有体现的不是很明显.私有成员可以通过 对象._ClassName__私有成员进行访问 2. 使用封装借助了装饰器 其实具有类get和set等操作
- python 面向对象 封装
什么是封装 广义上的封装:代码的保护,面对对象的思想本身就是 只让自己的对象能调自己类的方法 狭义上的封装:将属性和方法藏起来 私有属性/私有方法 python没有真正意义的私有属性,可以通过调用实例 ...
随机推荐
- Python日志记录(Logging)
日志记录跟程序的测试相关,并且在大幅度更改程序内核时很有用,它可以帮助我们找到问题和错误的所在.日志记录基本上就是收集与程序运行有关的数据,这样可以在随后进行检查或者累计数据. 1.简单示例 在Pyt ...
- Jersey实现Client端:GET/PUT/POST/DELETE
原文地址:Jersey客户端API调用REST风格的Web服务 [节选] 要开始使用 Jersey 客户端 API,你首先需要创建一个 com.sun.jersey .api.client.Clien ...
- [NOIP2017] 时间复杂度 (模拟,栈)
题目链接 Solution 用栈进行模拟. 记录一个 \(map\) 来看循环变量有没有用过. 对于每一次入栈都加信息. 出栈直接将 \(top\) 减一下. 反正一堆乱七八糟的东西瞎搞... 注意条 ...
- Django的标准库django.contrib包介绍
原文地址:http://www.nowamagic.net/academy/detail/1318716 前面我们激活了 Django 后台,我们要使用自动化的站点管理工具(django.contri ...
- Solr5.2.1+Zookeeper3.4.9分布式集群搭建
1.选取三台服务器 由于机器比较少,现将zookeeper和solr都部署在以下三台机器上.(以下操作都是在172.16.20.101主节点上进行的哦) 172.16.20.101 主节点 172.1 ...
- 标准C程序设计七---46
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- hdu 1401(单广各种卡的搜索题||双广秒速)
Solitaire Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- pdf转word工具
pdf转word工具及安装:http://blog.sina.com.cn/s/blog_6172011c0102vxir.html pdf去加密:http://www.downxia.com/dow ...
- ionic build Android错误记录 error in opening zip file
0.写在前头 运行 :cordova requirements Requirements check results for android: Java JDK: installed 1.8.0 An ...
- Codeforces Gym 100431A Achromatic Number 欧拉回路
原题链接:http://codeforces.com/gym/100431/attachments/download/2421/20092010-winter-petrozavodsk-camp-an ...