详解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实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
Python简单实现控制电脑的方法
Jan 22 Python
Python代码缩进和测试模块示例详解
May 07 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
详解python中的数据类型和控制流
Aug 08 Python
使用apiDoc实现python接口文档编写
Nov 19 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
pytorch之ImageFolder使用详解
Jan 06 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
python使用建议与技巧分享(二)
Aug 17 Python
Prometheus开发中间件Exporter过程详解
Nov 30 Python
Python中的套接字编程是什么?
Jun 21 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载入页面时编码的方法
2014/07/29 PHP
php表单敏感字符过滤类
2014/12/08 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
javascript 节点排序 2
2011/01/31 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
windows上安装Anaconda和python的教程详解
2017/03/28 Python
Python中join函数简单代码示例
2018/01/09 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
2015年教师业务工作总结
2015/05/26 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang