面向对象编程

在python中,同样是类和对象作为重要的组成部分。

而且在python中基本数据类型如int都是有封装类的,都有自己的方法,应该是和java里面的Integer类似吧

类包括域和方法:域也就是类或对象中的变量,方法就是类里面声明的函数

self关键字:

相当于java中的this,下面是个例子:

#!/usr/bin/python
# Filename: method.pyclass Person:def sayHi(self):print 'Hello, how are you?'p = Person()
p.sayHi()# This short example can also be written as Person().sayHi()

你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

init方法的使用和说明(相当于构造函数):

用来在类被实例化后马上就被运行的一段程序,用来作为对象的初始化操作

#!/usr/bin/python
# Filename: class_init.pyclass Person:def __init__(self, name):self.name = namedef sayHi(self):print 'Hello, my name is', self.namep = Person('qjx')
p.sayHi()# This short example can also be written as Person('qjx').sayHi()
$ python class_init.py
Hello, my name is qjx

del方法的使用和说明(相当于析构函数):

他是用在对象被释放后运行的一段程序,用来释放资源等操作,一般在程序消逝后自动进行,如果要手动释放,就要显示的调用del语句

一般的,对于变量和方法的作用域

  • __privatevar(两个下划线前缀)python会把它作为私有变量

  • 还有一个惯例,也就是平常人们的命名习惯,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。

  • 其他的名称都将作为公共的,可以被其他类/对象使用

继承(SchoolMember类被称为 基本类 或 超类 。而Teacher和Student类被称为 导出类 或 子类 )

#!/usr/bin/python
# Filename: inherit.pyclass SchoolMember:'''Represents any school member.'''def __init__(self, name, age):self.name = nameself.age = ageprint '(Initialized SchoolMember: %s)' % self.namedef tell(self):'''Tell my details.'''print 'Name:"%s" Age:"%s"' % (self.name, self.age),class Teacher(SchoolMember):'''Represents a teacher.'''def __init__(self, name, age, salary):SchoolMember.__init__(self, name, age)self.salary = salaryprint '(Initialized Teacher: %s)' % self.namedef tell(self):SchoolMember.tell(self)print 'Salary: "%d"' % self.salaryclass Student(SchoolMember):'''Represents a student.'''def __init__(self, name, age, marks):SchoolMember.__init__(self, name, age)self.marks = marksprint '(Initialized Student: %s)' % self.namedef tell(self):SchoolMember.tell(self)print 'Marks: "%d"' % self.markst = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)print # prints a blank linemembers = [t, s]
for member in members:member.tell() # works for both Teachers and Students
$ python inherit.py
(Initialized SchoolMember: Mrs. Shrividya)
(Initialized Teacher: Mrs. Shrividya)
(Initialized SchoolMember: Swaroop)
(Initialized Student: Swaroop)Name:"Mrs. Shrividya" Age:"40" Salary: "30000"
Name:"Swaroop" Age:"22" Marks: "75"

Python在子类中不会自动调用基本类的constructor,你得亲自专门调用它。

Python中可以多重继承

转载于:https://www.cnblogs.com/qjx-2016/p/7922246.html

python学习之路-第七天-python面向对象编程简介相关推荐

  1. 我的python学习之路_我的Python学习之路

    简单算来,接触Python有些时日了.想要做个简单的总结,算是为想要入门Python的童鞋做一个简单的介绍吧. 什么是Python Python,是一种面向对象.直译式的计算机程序语言.它包含了一组功 ...

  2. 我的python学习之路_我的Python入门之路

    今天跟大家分享个好消息,之前整理了公众号上的文章去投稿,最终在编程教室2019新春征稿活动中拿到了优秀奖,赚取了人生第一笔稿费,着实开心! 获得了Crossin编程教室的肯定与认可,开心之余,我也想回 ...

  3. 王亟亟的Python学习之路(七)-date,continue,迭代对象,生成器

    转载请注明出处:王亟亟的大牛之路 大多数的语言都提供了时间操作的相应类,诸如java的java.util.Date,java.util.Calendar等等, Python中是time 和 calen ...

  4. Python学习之路(七)合并单元格解决自动换行,利用replace()

    今天在学习的过程之中,在用openpyxl合并单元格的时候发现有换行,又不想输出的时候有换行,在网上没有找到解决办法,于是想到了repalce函数. 问题描述: 在解决问题的时候先将单元格的类型转换成 ...

  5. python学习之路:期权定价与python实现

    一.目前国际上主流的期权定价模型主要有: BSM定价模型 BAW定价模型 CRR定价模型 二叉树模型 二.模型适用,需要说明的是: 1.可以直接用BS模型计算欧式期权的理论价格. 2.BS模型对欧式期 ...

  6. Python基础——PyCharm版本——第七章、面向对象编程

  7. Python学习之路9☞面向对象的程序设计

    Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...

  8. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  9. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

最新文章

  1. logstash 自动重新加载配置
  2. Nodejs与mysql连接池的应用(pool)
  3. boost::mpl模块实现map相关的测试程序
  4. Java DataOutputStream writeByte()方法与示例
  5. java接口文件定义类_Java入门笔记(四)类、包和接口
  6. SqlServer表中两条全然同样的记录,怎样删除当中1条
  7. c++数字转化为字符串、字符串转换为数字
  8. 黄金分割比的重新理解
  9. IPTV的QoE评价方法
  10. java 队列实现_队列的实现(JAVA)
  11. refresh-刷新
  12. 谷歌浏览器chrome插件安装出现“程序包无效:CRX_HEADER_INVALID”的解决办法
  13. echars的矩形数图根据大小根据一个值变化,颜色跟随另外一个值变化
  14. 防范项目中人员频繁变动的风险
  15. oracle 时间毫秒数,计算Oracle中两个时间戳之差(以毫秒为单位)
  16. 解决MainActivity.onCreate(Unknown Source)的混淆错误
  17. 商家如何抓住当下最火的抖音本地生活?
  18. base64图片格式转换
  19. C语言中最难啃的硬骨头非这三个莫属
  20. 教师资格证是计算机考试地点,教师资格证考试必须有计算机模块证吗?

热门文章

  1. java document select_javasript 操作option select
  2. 很慢怎么办_手机信号满格,网速却很慢怎么办?3招教你一键恢复网络
  3. java 十亿数据量运行速度慢_Java学习进阶之数据结构知识梳理
  4. 为什么EClipse不显示错误
  5. sftp get服务器无文件会抛异常,sftp 异常,有遇到的吗
  6. 将fork出来的分支与原项目合并
  7. 玩转Linux必备知识(四)
  8. java图像处理之自动对比度
  9. Java学习小程序(4)数列求和
  10. 安装spark1.3.1单机环境