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面向对象总结相关推荐

  1. python完全支持面向对象编程_Python 面向对象编程概要

    面向对象三大特性 面向对象的三大特性是指:封装.继承和多态. 封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 ...

  2. python面向对象图片_Python面向对象-概念、类、实例

    OOP--Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...

  3. python封装举例_Python面向对象封装操作案例详解

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

  4. python面向对象继承_Python 面向对象 --- 继承

    目标 单继承 多继承 面向对象三大特性 1,封装 根据 职责 将 属性 和 方法 封装 到以抽象的 类 中 2,继承 实现代码的重用,相同的代码不需要重复的缩写 3,多态 不同的对象调用相同的方法,产 ...

  5. python完全支持面向对象编程_Python面向对象编程

    对象魔法 1.多态 多态指的是能够同样地对待不同类型和类的对象,既无需知道对象属于哪个类就可调用其方法. 2.封装 对象可能隐藏(封装)其内部状态.在有些语言中,这意味着对象的状态(属性)只能通过其方 ...

  6. python完全支持面向对象编程_python面向对象编程----009

    本篇内容: 1.反射 2.面向对象编程 3.面向对象三大特性 4.类成员 5.类成员修饰符 6.类的特殊成员 7.单例模式 反射 python中的反射功能是由以下四个内置函数提供:hasattr.ge ...

  7. python self理解_Python面向对象总结,让你快速掌握面向对象常用的用法

    python等面向对象的提出是为了更好的处理和管理同属一个类别的事情,这样就可以省去多余重复的基础代码,让程序变得更加简洁和强大.对于学习编程的朋友来说,熟悉掌握面向对象是非常重要的. 下面开始讲讲关 ...

  8. python不完全支持面向对象程序设计_Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】...

    本文实例讲述了Python面向对象程序设计OOP.分享给大家供大家参考,具体如下: 类是Python所提供的最有用的的工具之一.合理使用时,类可以大量减少开发的时间.类也在流行的Python工具中使用 ...

  9. python编程语言继承_Python面向对象程序设计类的封装与继承用法示例

    本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义 ...

  10. python oop示例_python 面向对象oop

    1 oop 对象世界观  -- oop是目前人类认知最接近实际生活的语言 一切事务皆对象 对象有运动规律和内部状态 对象之间可以相互调用 2.面向对象 唯一性:对象具有唯一性,不存在两个相同的对象,除 ...

最新文章

  1. docker 创建启用systemd服务的容器
  2. 实时搜索 elasticsearch vs solr
  3. 又一次Task.Wait引起的教训
  4. 20154319 《网络对抗技术》后门原理与实践
  5. Java获取元注解_Java 元注解
  6. inDesign教程,如何创建和编辑页面?
  7. python写sql语句_如何在Python脚本中执行多个SQL语句?
  8. 插头插座新旧标准对比和安规测试设备
  9. 威斯康星大学计算机科学教授,UW机器学习和数据科学活动吸引了国际知名的计算机科学家...
  10. mysql 悲观锁 详细讲解_mysql 悲观锁详解
  11. 1.4树莓派SSH远程登录
  12. FER 人脸情绪识别系统
  13. 棠玥寕谈芭蕾:人生应有一热爱
  14. 从git上克隆的vue项目在本地运行步骤
  15. android博学谷布局,Android项目实战系列—基于博学谷(四)我的模块(下)
  16. IOS下载并解压zip文件
  17. 最简单小米机器一键激活XPOSED框架教程
  18. 安搭Share:如果说格局决定人生,那么什么决定格局
  19. 使用python pylab库 画线
  20. Flash Player的版本

热门文章

  1. R语言导入、读取网络CSV数据(Read a CSV from a URL)实战:R原生read_csv、readr包、data.table
  2. R语言数据热力图绘制实战(基于原生R函数、ggplot2包、plotly包)
  3. R密度聚类之DBSCAN模型
  4. 句法分析是什么?成分句法分析、依存句法分析又是什么?他们之间有什么区别?
  5. 什么是奇异值?奇异值分解是什么?SVD分解详解及实战
  6. java语言编写简易表达式_将简单的表达语言放入Java
  7. 泛化 实现 组合 聚合 关联 依赖
  8. 机器学习算法之K-近邻算法
  9. 德布鲁因图和OLC组装基因组
  10. Linux命令grep