详解Python中类的定义与使用


Posted in Python onApril 11, 2017

类顾名思义,就是一类事物、或者叫做实例,它用来描述具有共同特征的一类事物。我们在python中声明类的关键词是class,类还有功能和属性,属性就是这类事物的特征,而功能就是它能做什么,也是就是方法或者函数。我们仍然用例子来说明问题。

目标:

1.类的定义

2.父类,子类定义,以及子类调用父类

3.类的组合使用

4.内置功能

1.类的定义

代码如下:

#!/usr/bin/env python
#coding:utf8


class Hotel(object):
  """docstring for Hotel"""
  def __init__(self, room, cf=1.0, br=15):
    self.room = room
    self.cf = cf
    self.br = br

  def cacl_all(self, days=1):
    return (self.room * self.cf + self.br) * days

if __name__ == '__main__':
  stdroom = Hotel(200)
  big_room = Hotel(230, 0.9)
  print stdroom.cacl_all()
  print stdroom.cacl_all(2)
  print big_room.cacl_all()
  print big_room.cacl_all(3)

2.父类、子类以及调用父类

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 父类
class AddBook(object):
  def __init__(self, name, phone):
    self.name = name
    self.phone = phone

  def get_phone(self):
    return self.phone

# 子类,继承
class EmplEmail(AddBook):
  def __init__(self, nm, ph, email):
    # AddBook.__init__(self, nm, ph) # 调用父类方法一
    super(EmplEmail, self).__init__(nm, ph) # 调用父类方法二
    self.email = email

  def get_email(self):
    return self.email

# 调用
if __name__ == "__main__":
  Detian = AddBook('handetian', '18210413001')
  Meng = AddBook('shaomeng', '18210413002')

  print Detian.get_phone()
  print AddBook.get_phone(Meng)

  alice = EmplEmail('alice', '18210418888', 'alice@xkops.com')
  print alice.get_email(), alice.get_phone()

3.类的组合使用

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''
1.class类的组合使用
2.手机、邮箱、QQ等是可以变化的(定义在一起),姓名不可变(单独定义)。
3.在另一个类中引用
'''

class Info(object):
  def __init__(self, phone, email, qq):
    self.phone = phone
    self.email = email
    self.qq = qq

  def get_phone(self):
    return self.phone

  def update_phone(self, newphone):
    self.phone = newphone
    print "手机号更改已更改"

  def get_email(self):
    return self.email


class AddrBook(object):
  '''docstring for AddBook'''
  def __init__(self, name, phone, email, qq):
    self.name = name
    self.info = Info(phone, email, qq)


if __name__ == "__main__":
  Detian = AddrBook('handetian', '18210413001', 'detian@xkops.com', '123456')
  print Detian.info.get_phone()
  Detian.info.update_phone(18210413002)
  print Detian.info.get_phone()
  print Detian.info.get_email()

4.内置功能(函数()加与不加的区别)

代码如下:

#!/usr/bin/env python
#coding:utf8

class Books(object):
  def __init__(self, title, author):
    self.title = title
    self.author = author

  def __str__(self):
    return self.title

  def __repr__(self):
    return self.title

  def __call__(self):
    print "%s is written by %s" %(self.title, self.author)


if __name__ == '__main__':
  pybook = Books('Core Python', 'Wesley')
  print pybook
  pybook()
#!/usr/bin/env python
#coding:utf8

class Number(object):
  """Custum object
  add/radd -> +; 
  sub/rsub -> -;
  mul/rmul -> *;
  div/rdiv -> /;
  """
  def __init__(self, number):
    self.number = number

  def __add__(self, other):
    return self.number + other    

  def __radd__(self, other):
    return self.number + other

  def __sub__(self, other):
    return self.number - other

  def __rsub__(self, other):
    return other - self.number


  def __gt__(self, other):
    if self.number > other:
      return True
    return False


if __name__ == '__main__':
  num = Number(10)
  print num + 20
  print 30 + num
  print num - 5
  print 11 - num
  print num > 20

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中对列表排序实例
Jan 04 Python
python中随机函数random用法实例
Apr 30 Python
python实现bucket排序算法实例分析
May 04 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
Python算法之求n个节点不同二叉树个数
Oct 27 Python
详解如何利用Cython为Python代码加速
Jan 27 Python
python os用法总结
Jun 08 Python
Python列表推导式与生成器用法分析
Aug 02 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 Python
python获取指定时间差的时间实例详解
Apr 11 #Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 #Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 #Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 #Python
一个基于flask的web应用诞生 flask和mysql相连(4)
Apr 11 #Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 #Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 #Python
You might like
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python3 flask实现文件上传功能
2020/03/20 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
如何完美的建立一个python项目
2020/10/09 Python
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
化工专业个人的求职信范文
2013/11/28 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
新年晚会开场白
2015/05/29 职场文书
Python入门学习之类的相关知识总结
2021/05/25 Python