Python中类的定义与使用

Part I

目标:

  1.类的定义

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

  3.类的组合使用

  4.内置功能

1.类的定义

#!/usr/bin/env python
#coding:utf8class Hotel(object):"""docstring for Hotel"""def __init__(self, room, cf=1.0, br=15):self.room = roomself.cf = cfself.br = brdef cacl_all(self, days=1):return (self.room * self.cf + self.br) * daysif __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 = nameself.phone = phonedef 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 = emaildef 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 = phoneself.email = emailself.qq = qqdef get_phone(self):return self.phonedef update_phone(self, newphone):self.phone = newphoneprint "手机号更改已更改"def get_email(self):return self.emailclass AddrBook(object):'''docstring for AddBook'''def __init__(self, name, phone, email, qq):self.name = nameself.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:utf8class Books(object):def __init__(self, title, author):self.title = titleself.author = authordef __str__(self):return self.titledef __repr__(self):return self.titledef __call__(self):print "%s is written by %s" %(self.title, self.author)if __name__ == '__main__':pybook = Books('Core Python', 'Wesley')print pybookpybook()

----------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/usr/bin/env python
#coding:utf8class  Number(object):"""Custum objectadd/radd -> +; sub/rsub -> -;mul/rmul -> *;div/rdiv -> /;"""def __init__(self, number):self.number = numberdef __add__(self, other):return self.number + other        def __radd__(self, other):return self.number  + otherdef __sub__(self, other):return self.number - otherdef __rsub__(self, other):return other - self.numberdef __gt__(self, other):if self.number > other:return Truereturn Falseif __name__ == '__main__':num = Number(10)print num + 20print 30 + numprint num - 5print 11 - numprint num > 20

Part II


一、类定义:

class <类名>:<语句>

类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象

类的私有属性:
  __private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs
类的方法
  在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
私有的类方法
  __private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用slef.__private_methods

类的专有方法:
__init__  构造函数,在生成对象时调用
__del__   析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用

__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__称方

#类定义 class people: #定义基本属性 name = '' age = 0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 #定义构造方法 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("%s is speaking: I am %d years old" %(self.name,self.age)) p = people('tom',10,30) p.speak()

二、继承类定义:
1.单继承

class <类名>(父类名)<语句>
class childbook(book)age = 10
#单继承示例 class student(people): grade = '' def __init__(self,n,a,w,g): #调用父类的构函 people.__init__(self,n,a,w) self.grade = g #覆写父类的方法 def speak(self): print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade))      s = student('ken',20,60,3) s.speak()

2.类的多重继承

class 类名(父类1,父类2,....,父类n)<语句1>

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法

复制代码 代码如下:
#另一个类,多重继承之前的准备
class speaker(): topic = '' name = '' def __init__(self,n,t): self.name = n self.topic = t def speak(self): print("I am %s,I am a speaker!My topic is %s"%(self.name,self.topic)) #多重继承
class sample(speaker,student): a ='' def __init__(self,n,a,w,g,t): student.__init__(self,n,a,w,g) speaker.__init__(self,n,t) test = sample("Tim",25,80,4,"Python")
test.speak()#方法名同,默认调用的是在括号中排前地父类的方法

Python中类的定义与使用相关推荐

  1. Python中类的定义与实例化

    今天我们来聊一下有关Python中类的定义与实例化的问题. 一.Python中类的定义 Python中定义类的基本格式为: class 类名: def __init__(self,参数1,参数2,-- ...

  2. Python 中类的定义和理解

    Python 中类的定义和理解 前言 一.类的定义 二.具体的案例分析 1. 定义一个类 2. 类的实例化 3. 内置__init__方法 欢迎学习交流! 邮箱: z-@1-6.com 网站: htt ...

  3. python中类的定义_python 类中定义类

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 现有自定义类(color.py)如下,类位于路径'userschuxingpyt ...

  4. python中类的定义、实例化、封装以及私有变量/方法

    1.  定义类 python中定义一个类的格式如下: class MyClass(object):def __init__(self,data1,data2):self.__data1=data1se ...

  5. python中完整类的定义_详解Python中类的定义与使用

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

  6. python中类的定义和使用_Python中类的定义与使用

    一.类的简述 类时面向对象编程的核心内容.通常把具有相同特征(数据元素)与行为(功能)的事物描述定义为一个类,类是一个抽象的概念,把类实例化既可以得到一个对象. 因此,对象的抽象是类,类的具体化就是对 ...

  7. Python中类方法定义及常用的实现方式

    1. python类的属性和方法查看 class Person_1:mind = '有思想'belif = '有信仰'animal = '高级动物'def tt():passprint(Person_ ...

  8. python中类的定义方法_python中类的定义方法

    #coding =utf-8 ## 类的定义##-------------------------------------------------- classEmployee: empCount=0 ...

  9. python中类的定义和使用_在Python中定义和使用类

    我正在学习Python,我有一些代码没有完成我认为它应该做的事情.我使用的是v3.4.3.最有可能的问题是:class Router: '''A representation of a router' ...

最新文章

  1. pytorch kl散度学习笔记
  2. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组
  3. 学习笔记6-小项目-走迷宫、推箱子
  4. Sublime Text[崇高文本]----最性感的编辑器(程序员必备)
  5. 【华为云技术分享】Linux内核发展史 (2)
  6. GarsiaWachs算法:石子归并问题
  7. python基础篇——集合
  8. 彻底搞懂git rebase命令
  9. 10 EDA技术实用教程【时序电路Verilog设计1】
  10. 动态IP或无公网IP时外网访问内网固定端口管家婆等应用
  11. 计算机应用项目教案,计算机应用基础2项目二--电子教案.doc
  12. [EventKit] Error getting default calendar for new reminders: Error Domain=EKCADErrorDomain Code=1013
  13. 珍贵数学文献(II)
  14. Linux部署springboot项目(从安装java开始)
  15. P4113 [HEOI2012]采花 ( 树状数组 + 离线 )
  16. 用计算机弹猴哥,《西游记》孙悟空获“弼马温”一职,网友弹屏吐槽:猴哥被忽悠了...
  17. Robot 监控服务器资源
  18. Jmeter通过HTTP代理服务器录制脚本(二)
  19. Unity 使用NavMesh实现简易的摇杆功能
  20. pandas 字符串切片后保存_pandas:快速处理字符串方法

热门文章

  1. 从ubuntu中文论坛转载的一片超好的文章,慢慢学习中
  2. linux cp使用注意事项
  3. leetcode算法题--在排序数组中查找数字 I
  4. Apache Hook机制解析(下)——实战:在自己的代码中使用Apache的钩子
  5. 整合spring cloud云架构 - Gateway的基本入门
  6. HTML DOM 第五篇
  7. [置顶] PHP如何扩展和如何在linux底层对php扩展?
  8. 剑指offer 算法 (知识迁移能力)
  9. C#:Guid.NewGuid()和DateTime.Now该选择哪个???
  10. python中查看显卡状态