详解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 获取本机ip地址的两个方法
Feb 25 Python
python分析网页上所有超链接的方法
May 08 Python
Python基础语法(Python基础知识点)
Feb 28 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
使用python采集Excel表中某一格数据
May 14 Python
降低python版本的操作方法
Sep 11 Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
python statsmodel的使用
Dec 21 Python
用python批量移动文件
Jan 14 Python
Python  lambda匿名函数和三元运算符
Apr 19 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中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
强制设为首页代码
2006/06/19 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
python生成随机mac地址的方法
2015/03/16 Python
Python os模块学习笔记
2015/06/21 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
浅谈Python的list中的选取范围
2018/11/12 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
python爬取抖音视频的实例分析
2021/01/19 Python
冬季施工防火方案
2014/05/17 职场文书
企业宣传口号
2014/06/12 职场文书
银行求职自荐书
2014/06/25 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
长城导游词
2015/01/30 职场文书
办公室主任岗位职责
2015/01/31 职场文书
试用期自我评价范文
2015/03/10 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
深入理解go slice结构
2021/09/15 Golang
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers