Python面向对象案例汇总

简介

Python是一门面向对象的语言,用这种思想为指导设计的程序,把数据和对数据的操作封装在一起组成类,通过类来创建对象,通过对象之间的交互来实现程序的功能。

定义个空的类

class FirstClass:pass
if __name__ == '__main__':c = FirstClass()print(c)#结果
<__main__.FirstClass object at 0x0000022128E17F70>

定义个学生类(仅属性)

class Student:# 构造方法(初始化),这里传入name和age两个参数def __init__(self,name,age):self.name=nameself.age=ageif __name__ == '__main__':s = Student('沈亮',30);#显示对象内存地址print(s)# 访问对象里的name和age属性print("{}您的年龄是:{}岁".format(s.name,s.age))#结果
<__main__.Student object at 0x0000022C7CAF7700>
沈亮您的年龄是:30岁

定义个学生类(属性及方法)

class Student:# 构造方法(初始化),这里传入name和age两个参数def __init__(self,name,age):self.name=nameself.age=agedef sayInfo(self): #通过对象里的方法访问name和age属性print("{}您的年龄是:{}岁".format(s.name, s.age))if __name__ == '__main__':s = Student('沈亮',30);#显示对象内存地址print(s)# 访问对象方法s.sayInfo()#结果
<__main__.Student object at 0x000001C7F6A47700>
沈亮您的年龄是:30岁

方法内嵌套类

#方法里嵌套Converter类,如果该对象不存在则创建,最终函数通过Converter对象里的convert方法返回(完成分数和等级的转换)
def score2level(score,converter=None):class Converter:def convert(self,score):level='C'if score>=80:level='A'elif 60<score <80:level = 'B'return levelif not converter:c = Converter()return c.convert(score)if __name__ == '__main__':score=75print("您的分数是{0},对应的等级是{1}".format(score,score2level(score)))#结果
您的分数是75,对应的等级是B

计算二维平面里点到点距离

import math
class Point:#初始化点的坐标,默认在原点(即x=0,y=0)def __init__(self,x=0,y=0):self.move(x,y)#设置点的坐标为(x,y)def move(self,x,y):self.x=xself.y=y#将点的坐标重置到(0,0)def reset(self):self.move(0,0)#计算两点之间的距离(勾股定理)def calculateDistance(self,otherPoint):return math.sqrt(pow((self.x-otherPoint.x),2)+pow((self.y-otherPoint.y),2))if __name__ == '__main__':point1 = Point(3,0)point2 = Point(0,4)#计算点point1和点point2的距离print(point1.calculateDistance(point2))#计算点point3=的横坐标x、纵坐标ypoint3=Point(4,6)print(point3.x, point3.y)#重置点point3,即作为为坐标原点point3.reset()print(point3.x,point3.y)#结果
5.0
4 6
0 0

私有属性及私有方法

class Student:# 构造方法(初始化),这里传入name、age、__level三个参数,其中__level是私有属性def __init__(self,name,age,level):self.name=nameself.age=ageself.__level=leveldef sayInfo(self): #通过对象里的方法访问name和age属性print("{}您的年龄是:{}岁".format(self.name, self.age))   #定义私有方法    def __getLevel(self):print("{}您的等级是:{}".format(self.name, self._Student__level))if __name__ == '__main__':s= Student('ShenLiang',25,'A')#访问私有方法时,需要加_类名__方法名s._Student__getLevel()#结果
ShenLiang您的等级是:A

查看对象的自定义属性及其值

class Student:# 构造方法(初始化),这里传入name、age、__level三个参数,其中__level是私有属性def __init__(self,name,age,level):self.name=nameself.age=ageself.__level=leveldef sayInfo(self): #通过对象里的方法访问name和age属性print("{}您的年龄是:{}岁".format(self.name, self.age))#定义私有方法def __getLevel(self):print("{}您的等级是:{}".format(self.name, self._Student__level))if __name__ == '__main__':s= Student('ShenLiang',25,'A')# 输出类里用户自定义的属性、方法print([v for v in dir(s) if not v.startswith('__')])# 输出对象里用户自定义的属性及其值for item in vars(s):print(item,":",vars(s)[item])#结果
['_Student__getLevel', '_Student__level', 'age', 'name', 'sayInfo']
name : ShenLiang
age : 25
_Student__level : A

类变量及类方法的使用

class Student:cnt =0# 初始化方法def __init__(self,name,score,level):self.name = nameself.score = scoreself.__level = levelStudent.cnt +=1def sayScore(self): #对象方法操作对象属性print("{0}\t的分数是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定义print("{0}当前的等级是:".format(self.name,self.__level))@classmethod #类方法操作类属性def printCnt(cls):print(cls.cnt)
if __name__ == '__main__':s1=Student('Shenliang',30,'A')s2=Student('Liangshen',20,'B')print('当前学生数:\t',Student.cnt)print("对象方式调用:") #s1和s2对象调结果都是2s1.printCnt() #s2.printCnt()#结果
当前学生数:   2
对象方式调用:
2

静态变量的使用

class Student:cnt =0# 初始化方法def __init__(self,name,score,level):self.name = nameself.score = scoreself.__level = levelStudent.cnt +=1def sayScore(self): #对象方法操作对象属性print("{0}\t的分数是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定义print("{0}当前的等级是:".format(self.name,self.__level))@classmethod #类方法操作类属性def printCnt(cls):print(cls.cnt)@staticmethoddef add(a,b):return(a+b)if __name__ == '__main__':s1=Student('Shenliang',30,'A')s2=Student('Liangshen',20,'B')print('两数相加的结果是:\t',Student.add(20,30))注:静态方法不可以操作对象实例属性及方法。

属性装饰器

class Student:cnt =0# 初始化方法def __init__(self,name,score,level):self.name = nameself.score = scoreself.__level = levelStudent.cnt +=1def sayScore(self): #对象方法操作对象属性print("{0}\t的分数是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定义print("{0}当前的等级是:".format(self.name,self.__level))@propertydef level(self):return self.__levelif __name__ == '__main__':s1=Student('Shenliang',30,'C')print("{0}您的等级是{1}".format(s1.name,s1.level))#结果
Shenliang您的等级是C

Python面向对象案例汇总相关推荐

  1. python面向对象案例--买水果

    python面向对象案例–买水果 知识点讲解 面向对象基础 ​ 我今天讲的用一句话概括就是对象是可以被当做参数传递的,这句话很精髓 ​ 在你看到这篇文章时,你至少要了解,对象,类,方法,属性这些概念 ...

  2. 【福利】全网最全Python插件开发案例汇总(持续更新~~)

    01.从零开发第一个Python插件 02.Python实现单据批改(单据头字段) 03.Python脚本实现保存自动提交审核 04.Python实现列表对暂存的单据批量保存 05.Python显示单 ...

  3. Python面向对象练习题汇总

    1. 什么是类,什么是对象? 类:对一类事物的描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也称实例(instance). 类是对象的抽象,对象是类的实例. 2. pytho ...

  4. Python图像处理案例汇总

    1.https://github.com/eastmountyxz/ImageProcessing-Python https://blog.csdn.net/eastmount/category_92 ...

  5. Python实战案例汇总,带你轻松从入门到实战

    Python 的火热,不仅让很多小白选手有了想学习的欲望,甚至连 BAT 的技术大牛,也将 Python 作为第二开发语言来提升自己. 虽然 Python 以简单易学著称,但是你知道如何快速学会 Py ...

  6. python面向对象三大特性_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. python 面向对象的封装_Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 ―― 将 属性 和 ...

  8. python面向对象类属性_python面向对象之类属性和类方法案例分析

    本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发, ...

  9. 思维导图:python面向对象(搞笑案例)

    关联阅读:可能是最全的 Python 面向对象入门教程了 手机版本 关联阅读:可能是最全的 Python 面向对象入门教程了 Python面向对象 面向对象入门 对象编程体验 一款简单自动运行小游戏模 ...

最新文章

  1. C++对象内存布局--⑤GCC编译器--单个虚拟继承
  2. android黑科技系列——静态分析技术来破解Apk
  3. python画平行坐标图_Matplotlib中的平行坐标图
  4. VIM-多文件-多窗口
  5. mysql distinct两列_正在检索两列,并对MySQL中的每列应用“distinct”
  6. MUI框架:栅格系统 + grid宫格布局 - 案例篇
  7. python怎么读音发音英语-python style是什么意思
  8. leetcode Implement strStr()
  9. javaFX学习之颜色选择器(ColorPicker)
  10. 基于STM32F103C8T6的74HC595驱动8位数码管模块学习
  11. Windows 10 微信双开或多开【PC端】
  12. MAXTENT模型地理维度不一致的解决办法
  13. python plc fx5u_三菱PLC FX3U和FX5U有什么区别
  14. 设计图标(logo)
  15. 【ValueError: could not convert string to float: ‘young‘】python利用pandas对string类型的数据序列化
  16. 教你如何提取Window系统蓝屏日志
  17. VB/VBA的变量,竟还有这些秘密
  18. windows下UHD安装教程
  19. PHP用户登录界面验证码显示为“X”(验证码图片无法显示)解决办法
  20. Spring Security之过滤器链【探案】+源码剖析

热门文章

  1. wxHtml 示例:关于对话框测试
  2. boost::rethrow_exception相关的测试程序
  3. boost::shared_mutex相关的测试程序
  4. boost::mpl模块实现set相关的测试程序
  5. boost::mpl模块实现empty_sequence相关的测试程序
  6. boost::mpl模块back相关的测试程序
  7. boost::gil::channel_traits用法的测试程序
  8. boost::exception_test::throw_test_exception<T>的测试程序
  9. boost::coroutine2模块实现layout的测试程序
  10. Boost enable_if库的测试程序