Python面向对象(其一)
python 面向对象(其一)
面向对象基本释义
- 对象: 具有一系列属性方法的集合
举例:
---------------------------------------同学小明 --------------------属性---------------- 名字: 小明 父亲:(未知) 母亲:(未知) 性别:男 年龄:15 --------------------方法---------------- 滚出去: 调用此方法可以让小明滚出教室 闭嘴: 调用此方法可以让小明闭嘴 告密:(仅老师可用) 写给阿花从未寄出去的表白信:(仅自己可知)
属性说明:
- 小明的名字、年龄、性别,对外可见,就是public属性;
- 小明的父亲、母亲对外不可见,只有小明知道,这个就是private属性;
- 如果小明还有兄弟姐妹,那么父亲、母亲这两个属性对兄弟姐妹父母都是可见的,这个就是protected属性,即有选择范围的对外可见
- 一般情况下指的是同一个package范围
- 方法说明:
- 滚出去、闭嘴这两个是任何人可以对小明进行调用的方法,默认public
- 告密是只有指定的人才可以调用,即选择性开放,一般为proteced
- 从未寄出去的表百姓,就是私有方法,除了自己谁都不知道,private
说明: 1. Python中默认是没有proteced属性的,而且共有私有之间隔离并不是完全绝对 2. Python中所有类型默认都是对象形式组织
面向对象在类中的体现
上面说的小明,用代码表述出来就是:
1 #! coding:utf-8 2 # object是对象类,也是python种一切对象的父类;所有的类型都显示/隐式的继承自object 3 # 平时使用时,可以直接写class XiaoMing 4 class XiaoMing(object): 5 6 name = "小明" 7 age = 15 8 gender = "男" 9 10 __father = "father_of_xiaoming" 11 __mother = "mother_of_xiaoming" 12 13 def __init__(self, relationship): 14 self.relationship = relationship 15 16 def goOut(self): 17 ''' 18 小明滚出去 19 ''' 20 print "Xiaoming, your %s let you go out"%self.relationship 21 22 def shutUp(self): 23 ''' 24 小明闭嘴 25 ''' 26 print "Xiaoming, your %s let you shut up"%self.relationship 27 28 # python没有proteced,默认为同一个package可以直接调用 29 def gaoMi(self): 30 ''' 31 告密 32 ''' 33 pass 34 35 #私有方法,开头方式是这样 36 def __sayLove(self): 37 ''' 38 写一封不敢寄出去的情书,唉,少年应许多情 39 ''' 40 print "%s, you should not watch it!"%self.relationship
小明这个类的使用过程是这样的
#实例化一个对象 xiaoming = XiaoMing("dude") print xiaoming.name print xiaoming.age print xiaoming.gender xiaoming.goOut() xiaoming.shutUp() xiaoming.gaoMi()# ======output======== # # 小明 # 15 # 男 # Xiaoming, your dude let you go out # Xiaoming, your dude let you shut up
Python中对象的应用
在python中可以通过dir(obj)
来查看每个对象当前可用的属性和方法,如:
print dir(xiaoming)# ======output======== # #['_XiaoMing__father', '_XiaoMing__mother', '_XiaoMing__sayLove', '__doc__', '__init__', '__module__', 'age', 'gaoMi', 'gender', 'goOut', 'name', 'relationship', 'shutUp']
上面例子中,注意_XiaoMing__father
, _XiaoMing__mother
,这两个属性为私有变量__father、__mother的外部调用方式,如下:
print xiaoming._XiaoMing__father # ======output======== # # father_of_xiaoming
* python中一切皆对象,凡是对象都可以用dir(obj)来查看属性方法,可以试试
类继承与重构
小明长大变超人了!
---------------------------------------超人小明--------------------属性----------------年龄:30 必杀技:镭射光线!biubiu!--------------------方法----------------滚出去: 谁敢叫本超人滚出去,站出来试试!告密:已经不需要告密了写给老婆阿芳的家信:暗恋的人最终没有成为自己的老婆啊
- 属性说明:
- 超人小明仍然具备同学小明的一切属性,除了年龄在长大
- 超人小明有了自己的必杀技,毕竟是超人嘛
- 方法说明:
- 滚出去:现如今哪个不怕死的敢让超人滚出去
- 告密:那些黑历史怎么可能重提
- 写给老婆阿芳的家信:心里也继续暗恋阿花,但毕竟有了自己的老婆了
如上,超人小明是同学小明后续的一个可能,也就是扩展子类,用代码描述为:
#! coding:utf-8 class SuperManXiaoMing(XiaoMing):action = "镭射光线!biubiu!"def __init__(self, relationship):super(SuperManXiaoMing, self).__init__(relationship)self.age = 30def goOut(self):print "现如今哪个不怕死的敢让超人滚出去! %s 你小子活腻歪了是吧!"%self.relationshipdef gaoMi(self):passdef loveToWife(self):print "阿芳,额想你!"
调用的例子为:
superman = SuperManXiaoMing("dude")print superman.nameprint superman.ageprint superman.genderprint superman.actionsuperman.goOut()superman.shutUp()superman.gaoMi()superman.loveToWife()print dir(superman)print superman._XiaoMing__father# ======output======== # # 小明 # 30 # 男 # 现如今哪个不怕死的敢让超人滚出去! dude 你小子活腻歪了是吧! # Xiaoming, your dude let you shut up # 阿芳,额想你! # ['_XiaoMing__father', '_XiaoMing__mother', '_XiaoMing__sayLove', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'action', 'age', 'gaoMi', 'gender', 'goOut', 'loveToWife', 'name', 'relationship', 'shutUp'] # father_of_xiaoming
看,上述输出中,gaoMi没有输出,因为被pass了。其他父类子类的内容全在里面了。
思考1
- 掌握上述知识可以做什么?
- 继承父类,super(className, self).init() 和 ParentClass.init()区别是什么?
- 类的使用场景有哪些?
- 对测试而言,类的好处与不好处有哪些?
转载于:https://www.cnblogs.com/SilenceCity/p/pythonOO1.html
Python面向对象(其一)相关推荐
- python面向对象的优点_Python面向对象编程——总结面向对象的优点
Python面向对象编程--总结面向对象的优点 一.从代码级别看面向对象 1.在没有学习类这个概念时,数据与功能是分离的 def exc1(host,port,db,charset): conn=co ...
- 这可能是Python面向对象编程的最佳实践
作者 | 崔庆才 来源 | 进击的Coder(ID:FightingCoder) Python 是支持面向对象的,很多情况下使用面向对象编程会使得代码更加容易扩展,并且可维护性更高,但是如果你写的多了 ...
- 第八课.Python面向对象(二)
类的继承和多态 继承和多态与函数有共同的目的,都是为了减少代码的冗余,提高复用的效率: 根据"Python面向对象(一)"的笔记,我现在定义一个Cinema类: #父类 class ...
- Python面向对象编程:类继承和其衍生术语
Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...
- 《Python面向对象编程指南》——1.2 基类中的__init__()方法
本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...
- Python 面向对象 基础
编程范式概述: 面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实 ...
- python面向对象类属性_python面向对象之类属性和类方法案例分析
本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发, ...
- 关于python面向对象编程中、下列说法中_关于Python面向对象编程的知识点总结
前言 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们 ...
- python对象编程例子-这是我见过最详细的Python面向对象编程!建议收藏!
原标题:这是我见过最详细的Python面向对象编程!建议收藏! 面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别. 面向过程编程: 1. 导入各种外部库 2. 设计各种全局变量 ...
- python面向对象编程的优点-Python面向对象编程——总结面向对象的优点
Python面向对象编程--总结面向对象的优点 一.从代码级别看面向对象 1.在没有学习类这个概念时,数据与功能是分离的 def exc1(host,port,db,charset): conn=co ...
最新文章
- gradle 查看依赖类库版本_使用Gradle命令查看项目中库的依赖关系
- 聊聊rocketmq的RemotingException
- 【Web安全】通过机器学习破解验证码图片
- ubuntu如何安装linux驱动程序,Ubuntu下如何安装驱动程序和应用软件?
- html中井号的作用,html5 css选择器 井号, 句点的区别
- 进程控制1--fork vfork函数
- 华科团队发布 OVIS 遮挡视频实例分割基准数据集
- linux 下vim文件乱码 cat文件正常处理方法
- mongodb golang 批量更新_Mongodb读取数据缓慢问题-Sparkamp;Mongodb
- JavaScript学习之Object(下)this
- Oracle和Mysql的区别 转载
- CodeForces - 1384
- 跨平台移动开发平台Flutter环境搭建
- 【实例】python 使用beautifulSoup 抓取网页正文 以淘宝商品价格为例
- 平凉锅盔西北美食的文化的传承之一
- Python3 ——斐波那契数列(经典)
- python测试代码报错:Ran 0 test in 0.00s
- python二次方程_怎么用python解一元二次方程?
- Android P (9.0)刘海屏(DisplayCutout)适配方法
- 人工智能实战2019第七次作业(OpenPAI) 16721088 焦宇恒
热门文章
- PHP使用ltrim、rtrim以及trim处理中文时遇到的“坑”
- Linux Ubuntu安装netcdf4.4
- 【华为OD机试模拟题】用 C++ 实现 - 病菌感染(2023.Q1)
- SpringBoot+log4j2的思路记录,实现每天输出日志文件
- 2019年用于机器学习的50个最佳公共数据集
- 熊掌号php自动提交链接示例,织梦熊掌号api自动提交代码
- 美团背后的商业模式是什么?后疫情时代该走向何方?
- js简易计算器 黑马pink老师
- ico的使用和工具和生成
- DeepViT、DeiT、CaiT、T2T、Cross-ViT、PiT、LeViT、CvT算法整理