python面向对象总结_python面向对象总结
1. 类和对象 类--对一类事物的抽象 没有实际意义 对象---真实客观存在的 类的实例化 类的具体化
类的定义
Class 类名(大驼峰命名,首字母大写),默认继承object,可以多继承
2.编写一个类 两类内容:属性---变量 行为--函数(方法)
属性 自我独有--成员属性(属于对象) 大家共享的----类属性(属于类)
行为 自我独有的--成员方法(属于对象) 大家共享的---类方法 普通函数不容许出现在类里面,方法必须是类方法或成员方法
3.构造函数 初始化函数 __init__ 不写,缺省构造器 初始化基本数据,对象被创建出来之前执行,尽量不要做业务处理
<1>.成员变量赋值
<2>.关键成员变量的创建
<3>.self永远指向当前对象自身,代表当前对象自身,等同于java的this
<4>.类方法的cls代表当前类自身
class Student(object):
school = '中国python职业技术学院'
def __init__(self, name, age=0):
# 右边的name 是传参的name,左边的自定义的,把外面传进来的name 赋予给 self.name变量
self.name = name
self.age = age
self.high = 0.0
self.score = [99, 88, 77]
def study(self):
print(f'我是{self.name},我爱学习')
def jump(self):
print(f'我是{self.name},我爱跑步')
# 类方法
@classmethod
def love_school(cls):
print(f"我爱{cls.school}")
@classmethod
def address(cls):
cls.love_school()
创建一个Student对象
zhangsan = Student(name = '张三')
lisi = Student(name= '李四')
1.获取成员变量,通过对象来获取
print(zhangsan.name)
#张三
2.修改成员变量属性,通过对象来修改,只对当前对象有效:
zhangsan.name='张四'
print(zhangsan.name)
#张四
3.调用成员方法,通过对象来调用,类不能调用成员方法,成员方法可以访问成员变量,类变量,调用类方法,调用成员方法
#<1>.通过对象调用成员方法study
zhangsan.study()
#我是张四,我爱学习
#<2>.类名不能调用成员方法
#通过Student类调用成员方法study
Student.study()
提示错误:
TypeError: study() missing 1 required positional argument: 'self'
#<3>.成员方法可以访问成员变量:
def jump(self):
#可以访问成员变量name属性
print(f'我是{self.name},我爱跑步')
zhangsan.jump()
输出:我是张四,我爱跑步
#<4>.成员方法可以访问类变量: def get_school(self):
#访问类变量school
print(self.school)
#<5>.成员方法可以调用类方法:
# 类方法
@classmethod
def love_school(cls):print(f"我爱{cls.school}")
#成员方法 def study(self):
#调用类方法
self.love_school()
zhangsan.study()
输出:
#我爱中国python职业技术学院
#<6>.成员方法可以调用成员方法
#成员方法A:
def study(self):
print(f'我是{self.name},我爱学习')
#成员方法B:
def jump(self):
#可以直接调用study方法
self.study()
zhangsan.jump()
输出:
我是张四,我爱学习
4.获取类变量:
<1>.通过对象来获取:
print(zhangsan.school)
#中国python职业技术学院
<2>. 通过类名来获取:
print(Student.school)
#中国python职业技术学院
5.修改类变量:
<1>.通过对象来修改,只对当前对象生效,其他对象不生效:
zhangsan.school='中国java学院'
print(zhangsan.school)
'中国java学院'
print(lisi.school)
'中国python职业技术学院'
<2>.通过类名来修改,所有的对象都生效:
Student.school = '中国C++学院'
print(zhangsan.school)
#中国c++学院
print(lisi.school)
#中国c++学院
6.类方法定义,方法头上需要加@classmethod 注解,方法传参cls,cls代表当前类自身,可以访问类变量,可以调用其他的类方法,类无权获取成员变量,无法调用成员方法
#<1>.类方法定义@classmethod def love_school(cls):
#可以通过当前类cls访问类变量school
print(f"我爱{cls.school}")
#<2>.调用其他的类方法
#类方法A: @classmethod
def love_school(cls):
print(f"我爱{cls.school}")
#类方法B: @classmethod
def address(cls):
cls.love_school()
#通过对象名调用类方法:
zhangsan.address()
#我爱中国python职业技术学院
#<3>. 类无法获取成员变量: @classmethod
def address(cls):
print(cls.name)
zhangsan.address()
调用address方法会报错:
AttributeError: type object 'Student' has no attribute 'name'
#<4>. 类无法调用成员方法: @classmethod
def address(cls):
#通过类调用成员方法studycls.study()
#调用类方法:zhangsan.address()
输出:
TypeError: study() missing 1 required positional argument: 'self'
7.类方法调用,通过类名来调用,或者通过对象来调用
# 1.通过对象来调用
zhangsan=Student(name='张三')
zhangsan.love_school()
# 2.通过类名来调用
Student.love_school()
8.静态方法,staticmethod ,可以访问类变量,通过类名或对象去调用,不能访问成员变量和成员方法,不需要传参
@staticmethod
def static_song():
print(f'我爱{Student.school}')
#调用:
Student.static_song()
zhangsan.static_song()
9.重写string方法,打印对象时,按照__str__方法格式展示
def __str__(self):
return f'{self.school}-{self.id}-{self.name}'
print(zhangsan)
#中国python职业技术学院-1-zhangsan
10.如果方法不需要使用成员变量,那么既可以定义成类方法,也可以定义成成员方法,如果需要使用成员变量,那么只能定义成成员方法
11.如果类里面定义了__len__()方法,那么可以对其取长度
#假设对对象的年龄取长度
def __len__(self):
return self.age
#调用方法:
zhangsan = Student(name = '张三',age=10)
print(len(zhangsan)
#10
12.类外部的方法,需要访问类内部的成本变量和类变量
# 把类对象当作参数,类的外部方法
def hello_my_school(obj):
print(f'我是{obj.name},我爱我的母校:{obj.school}')
# 调用类外部方法 hello_my_school
lisi = Student(id=1, name='lisi', age=10)hello_my_school(lisi)
#输出:
# 我是lisi,我爱我的母校:中国python职业技术学院
13.__getitem__ 按索引取值,获取对象的索引值def __getitem__(self, item):return self.score[item]
zhangsan = Student(name='张三')
print(zhangsan[-1])
#77
python面向对象总结_python面向对象总结相关推荐
- python完全支持面向对象编程_Python 面向对象编程概要
面向对象三大特性 面向对象的三大特性是指:封装.继承和多态. 封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 ...
- python面向对象图片_Python面向对象-概念、类、实例
OOP--Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...
- python封装举例_Python面向对象封装操作案例详解
本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 ...
- python面向对象继承_Python 面向对象 --- 继承
目标 单继承 多继承 面向对象三大特性 1,封装 根据 职责 将 属性 和 方法 封装 到以抽象的 类 中 2,继承 实现代码的重用,相同的代码不需要重复的缩写 3,多态 不同的对象调用相同的方法,产 ...
- python完全支持面向对象编程_Python面向对象编程
对象魔法 1.多态 多态指的是能够同样地对待不同类型和类的对象,既无需知道对象属于哪个类就可调用其方法. 2.封装 对象可能隐藏(封装)其内部状态.在有些语言中,这意味着对象的状态(属性)只能通过其方 ...
- python完全支持面向对象编程_python面向对象编程----009
本篇内容: 1.反射 2.面向对象编程 3.面向对象三大特性 4.类成员 5.类成员修饰符 6.类的特殊成员 7.单例模式 反射 python中的反射功能是由以下四个内置函数提供:hasattr.ge ...
- python self理解_Python面向对象总结,让你快速掌握面向对象常用的用法
python等面向对象的提出是为了更好的处理和管理同属一个类别的事情,这样就可以省去多余重复的基础代码,让程序变得更加简洁和强大.对于学习编程的朋友来说,熟悉掌握面向对象是非常重要的. 下面开始讲讲关 ...
- python不完全支持面向对象程序设计_Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】...
本文实例讲述了Python面向对象程序设计OOP.分享给大家供大家参考,具体如下: 类是Python所提供的最有用的的工具之一.合理使用时,类可以大量减少开发的时间.类也在流行的Python工具中使用 ...
- python编程语言继承_Python面向对象程序设计类的封装与继承用法示例
本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义 ...
- python oop示例_python 面向对象oop
1 oop 对象世界观 -- oop是目前人类认知最接近实际生活的语言 一切事务皆对象 对象有运动规律和内部状态 对象之间可以相互调用 2.面向对象 唯一性:对象具有唯一性,不存在两个相同的对象,除 ...
最新文章
- docker 创建启用systemd服务的容器
- 实时搜索 elasticsearch vs solr
- 又一次Task.Wait引起的教训
- 20154319 《网络对抗技术》后门原理与实践
- Java获取元注解_Java 元注解
- inDesign教程,如何创建和编辑页面?
- python写sql语句_如何在Python脚本中执行多个SQL语句?
- 插头插座新旧标准对比和安规测试设备
- 威斯康星大学计算机科学教授,UW机器学习和数据科学活动吸引了国际知名的计算机科学家...
- mysql 悲观锁 详细讲解_mysql 悲观锁详解
- 1.4树莓派SSH远程登录
- FER 人脸情绪识别系统
- 棠玥寕谈芭蕾:人生应有一热爱
- 从git上克隆的vue项目在本地运行步骤
- android博学谷布局,Android项目实战系列—基于博学谷(四)我的模块(下)
- IOS下载并解压zip文件
- 最简单小米机器一键激活XPOSED框架教程
- 安搭Share:如果说格局决定人生,那么什么决定格局
- 使用python pylab库 画线
- Flash Player的版本