详解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内置函数reversed()用法分析
Mar 20 Python
python版本的仿windows计划任务工具
Apr 30 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
python 多个参数不为空校验方法
Feb 14 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
Python数据处理篇之Sympy系列(五)---解方程
Oct 12 Python
详解分布式系统中如何用python实现Paxos
May 18 Python
python 中的jieba分词库
Nov 23 Python
Python之matplotlib绘制折线图
Apr 13 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
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
Python文件操作类操作实例详解
2014/07/11 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
买卖车协议书
2014/04/21 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
centos7安装mysql5.7经验记录
2022/05/02 Servers