文章目录

  • 类的三大方法
    • 1、静态属性
    • 2、类方法、静态方法
    • 3、三大方法总结
  • 类的组合
    • 1、用法分析
    • 2、面试案例分析

本篇文章是上一篇:初学者python笔记(面向对象编程、类与对象)的后续篇,是关于Python中面向对象编程的更深入分析,主要总结了类的三大方法:静态属性、类方法、类的组合方面的重点知识

类的三大方法

Ps:请先看案例,后文有对三大方法的分类总结

1、静态属性
class Room:def __init__(self,name,owner,width,length,heigh):self.name= nameself.owner= ownerself.width= widthself.length= lengthself.heigh= heigh#计算体积的一个方法@property   #绑定实例的方法(把整个类当做一个装饰器),property操作相当于把函数属性变成了数据属性def cal_area(self):print('%s的房间的体积为:' %self.owner, self.width * self.length * self.heigh)#实例化
v = Room('卧室','Ross',50,50,30)  #传入self的参数
v2 = Room('浴室','山治',2,2,3)#调用对象,因为被变成了数据属性(静态属性),就不需要加括号运行了
#v.cal_area()
#v2.cal_area()
v.cal_area
v2.cal_area

运行结果:

2、类方法、静态方法
class Room:tag = 'in Room'def __init__(self,name,owner,width,length,heigh):self.name= nameself.owner= ownerself.width= widthself.length= lengthself.heigh= heighdef pr_info(self):print(self.tag)@classmethod  #一个专门供类使用的方法(类方法),可以不通过实例,只执行类的方法def pr_infomation(cls,x):  #必要参数cls,但不需要再传入self了,因为类中包含了selfprint(cls)  #打印pr_infomation方法所在的类print(cls.tag)  #这样就可以单独调用类的方法print(x)  #外部传入的形参x@staticmethod  #声明定义一个静态方法,不绑定cls也不绑定selfdef eat_food(a,b,c):print('{} {} {}正在吃饭'.format(a,b,c))#因为没有绑定类,也没有绑定实例,故不能运行cls和self的属性#print('%s,%s来自静态方法' %(self.name,self.owner))#实例化
'''v = Room('卧室','Ross',50,50,30)  #传入参数
v2 = Room('浴室','山治',2,2,3)
#调用对象,说明self是可以调用类中定义的数据属性的
v.pr_infomation()
v2.pr_infomation()'''#类方法,可以传入参数,可以使用类属性
Room.pr_infomation('1')  #执行类中的方法,但不实例化,只能访问类的属性
Room.pr_infomation('带参类方法')  #传入参数的类方法#静态方法,只能使用传入的参数
Room.eat_food('路飞','索隆','山治')  #用类来调用静态方法
vv = Room('浴室','山治',2,2,3)
vv.eat_food('路飞','索隆','山治')  #用实例来调用静态方法方法,同样可行

运行结果:

3、三大方法总结

静态属性(property): 实例属性和类属性都可以访问(属性都能用,但不能传入参数

类方法(classmethod): 只访问类属性,不能访问实例的属性(类属性能用,传入参数也能用

静态方法: 不能访问类属性,也不能访问实例属性(只能使用函数调用时传入的参数

类的组合

1、用法分析
class Head:passclass Hand:passclass Foot:passclass Trunk:passclass Body:def __init__(self,name,id_num):self.name= nameself.id_num= id_num#用另外一个类来当属性,就称为类的组合self.head= Head()self.hand= Hand()self.foot= Foot()self.trunk= Trunk()#实例化
p1 = Body('1234556789','乌索普')
print(p1.__dict__)  #另外的类也包括在Body类的属性里面了

运行结果:

2、面试案例分析
#公司类
class Company:def __init__(self,name,location):  #公司名字,公司位置self.name= nameself.location= locationdef hr_interview(self):  #面试的动作print('%s 正在开展面试' %self.name)#职位类
class Position:def __init__(self,name,salary,period,company):  #4个形参self.name= nameself.salary= salaryself.period= periodself.company= company#实例化,存放不同公司的对象
v1 = Company('迪达拉','北京')
v2 = Company('极界','南京')
v3 = Company('木心丸','东京')
v4 = Company('串串香','西京')vv = Position('熊二',10000,6,v1)  #最后一个参数传入一个对象,表示公司#调用对象
vv.company.hr_interview()  #输出组合后的结果,直接调用对象#让用户实现选择:
#直接输出的语句,表示提示用户可供的选择
print("1-->迪达拉,北京\n2-->极界,南京\n3-->木心丸,东京\n4-->串串香,西京")while True:menu = {'1':v1,'2':v2,'3':v3,}choice = input('请选择公司>>>')com_obj = menu[choice]  #让用户输入的当做键来匹配对应的值,即那几个公司信息choice2 = input('请选择职位名>>>')choice3 = input('请选择薪资>>>')choice4 = input('请选择周期>>>')new_pt = Position(choice2,choice3,choice4,com_obj)  #创建一个职位的对象#输出对应的信息,通过类的属性来输出(包括组合属性)print('{}公司位置在{}\n您应聘的职位是{},薪资{},周期{}'.format(new_pt.company.name,new_pt.company.location, new_pt.name, new_pt.salary, new_pt.period))

运行结果:

什么时候用类的组合呢?
就是当类之间有显著不同,并且较小的类是较大的类所需要的组件时。
另外,还有类的继承与多态,与类的组合不同的另一个概念,将在后续文章进行总结

初学者python笔记(静态属性、类方法、静态方法、类的组合)相关推荐

  1. 初学者python笔记(面向对象编程、类与对象)

    文章目录 面向对象设计 类与对象的概念 1.类与对象的本质 2.面向对象设计 到 面向对象编程 3.类实例化 4.例如一个学校类 面向对象编程 1.案例 2.面向对象语言和面向对象编程之间的关系 3. ...

  2. 类属性、类方法;私有属性、公有属性;私有方法、公有方法;静态属性、静态方法;python的命名规范__xx__\__xx\_xx(自用笔记)

    Ⅰ.类属性.类方法(类和实例都能调用类属性和类方法) 类是一个特殊的对象,Python 中 一切皆对象:class AAA: #定义的类属于 类对象obj1 = AAA() #属于 实例对象 除了封装 ...

  3. 初学者python笔记(类的继承与多态---详解)

    文章目录 一.类的组合与继承的区别 二.类的继承 1.继承的功能分析 2.类的继承之派生.接口继承 3.用接口模块abc来实现接口继承 4.使用接口继承的好处 5.类的继承顺序 6.在子类中调用父类的 ...

  4. php静态方法怎么调用非静态属性,关于静态方法不能调用类中的非静态属性的理解...

    class test{ public $a; public function game(){ echo "123"; } public static function name() ...

  5. class类,静态属性 以及 静态方法

    class  创建类         class People{             constructor(name="王一",age=16) {      // const ...

  6. php中如何声明静态属性,PHP使用static关键字声明静态属性和静态方法

    PHP使用static关键字声明静态属性和静态方法 在PHP中,通过static关键字修饰的成员属性和成员方法被称为静态属性和静态方法. 静态属性和静态方法不需要在被类实例化的情况下就可以直接使用. ...

  7. PHP中的静态属性、静态方法、常量属性

    2019独角兽企业重金招聘Python工程师标准>>> 1.静态属性.静态方法 在面向对象编程中,我们不仅可以通过对象访问方法和属性,还可以通过类来访问它们.这样的方法和属性就是&q ...

  8. 静态属性和静态方法2 - C++快速入门22

    静态属性和静态方法2 让编程改变世界 Change the world by program 静态方法 嗯,还是静态方法?!这阵子有鱼油表示对该方法的特色还是有点云里雾里还有那个神神兮兮的this指针 ...

  9. 初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数)

    文章目录 一.匿名函数 二.map()函数 三.reduce()函数 四.filter()函数 五.三大函数总结 本篇文章内容有Python中的匿名函数和map()函数.reduce()函数.filt ...

最新文章

  1. 如何高效的学习TensorFlow代码?
  2. 前端入门之——jquery day9
  3. python怎么用matplotlib_Python Matplotlib 绘图使用指南 (附代码)
  4. Excel的vlookup函数的用法
  5. android的指纹问题
  6. 2019.9.17最小生成树知识点回顾
  7. nyoj 55 懒省事的小明 优先队列 multiset 还有暴力
  8. 前端学习(596):使用network waterfall分析页面载入性能
  9. oracle查询表字段和备注,Oracle 查询表信息(字段+备注)
  10. 初识Node.js之Node.js与java作为后台服务器的对比
  11. JAVA——附加作业2——情人节送花
  12. JAVA的内存分配机制
  13. opencvpython图像代码_PythonOpenCV各种图像库的图像读写 增强 方式的简单介绍(附代码)...
  14. Levenshtein编辑距离C++实现
  15. 配合字体图标的搜索框
  16. 论文阅读:Reducing Transformer Depth On Demand With Structured Dropout
  17. 单片机数码管显示实操
  18. hadoop 查看文件大小以及文件数
  19. Excel如何复制粘贴筛选后的单元格
  20. 可替代50欧姆_50欧姆阻抗四层板射频信号隔层参考做不了吗?

热门文章

  1. java帧结构_Java虚拟机运行时栈帧结构--《深入理解Java虚拟机》学习笔记及个人理解(二)...
  2. 平安京服务器维护无法发布新内容,决战平安京无法登陆怎么解决 无法登陆原因及解决方案一览_3DM手游...
  3. mysql存储过程的正确描述_MySQL存储过程中的基本函数描述
  4. c语言lua读文件,file-io – 在Lua中逐行读取文件
  5. autowired注入jar中的依赖_springboot项目中调用jar包中的类时报错 — 没有注入类
  6. 可视化排班管理_企业人事资源管理系统
  7. cobbler命令_使用Cobbler批量部署Linux和Windows:Windows系统批量安装(三)
  8. 处理100万条数据 python_使用 Python 处理3万多条数据只要几秒钟
  9. python mq_python测试rabbitmq的消息收发
  10. html介绍班级,班级介绍词 展示班级风采