学习笔记之——Python中类和对象的理解

  • 面向对象的含义和特性
    • Python中类的定义、结构、创建
      • Python类的定义
      • Python类的结构
      • 类的创建
      • 类的属性
      • 类的方法
  • 对象
    • 对象的创建
  • 参考资料

这个还有待完善。

面向对象的含义和特性

面向对象是将世界中的具体事物进行抽象,从而能够更好的帮助我们归纳总结,解决复杂问题的一种解决问题的思路。
面向对象的三个特性——封装、继承、多态。
类和对象是面向对象中的两个重要概念。
类:是对事物的抽象,比如汽车模型。
对象:是类的一个实例,比如:大卡车。
二者之间的联系:类是把对象抽象化,对象是把类实例化。这个有点像哲学上上的个体和整体。当然个体还可以继续细分,这种就是一种分而治之和分类思想。

类:是对事物的抽象,比如汽车模型。

Python中类的定义、结构、创建

Python类的定义

使用class关键字定义一个类,并且类名首字母要大写;
创建的类型不能用简单类型表示时就需要创建类;
类把需要的变量和函数组合,这种包含也称之为“封装”

Python类的结构

Class 类名:成员变量(属性)成员函数(方法)

类的创建

class MyClass():def fun(self): # self 是必须的print('I am fuction")

类的属性

类由属性和方法组成,类的属性是对数据的封装,类的方法则是对类的行为的封装。类的属性按使用范围分为公有属性和私有属性,类的属性范围取决于属性的名称。
公有属性:类中和类外都可以调用的属性
私有属性:不能被类以外的函数调用,只能通过类的内部方法调用。(其实也可以通过instance.classname__attribute方式访问,但只用于调试程序)。定义方式:以"–"双下划线开始的成员变量就是私有属性,否则是共有属性。
内置属性:由系统在定义类的时候默认添加的,由前后两个下划线构成__dict
_,module

#!/usr/bin/python
#coding:utf-8name ='Jock' # 定义全局变量
class Ren(object): # 定义类,class Ren或者class Ren()都可以name = '人' # 定义公有属性__money = '我有十块钱' # 定义私有属性def run(self): # 定义方法(函数),必须要有一个形参,通常用selfprint('跑步')print(name) # 调用全局变量name='Jock'print(self.name) # 调用类属性name='人'def say(self):lie = "我很欣赏你" # 定义局部变量,注意这个不是类的公有属性print(self.__money) # 内部调用私有属性print(lie) # 调用局部变量if __name__ == '__main__': # 直接调用则执行,被调用则不执行 zhangsan = Ren() # 实例化类,创建对象print(zhangsan.name) # 调用类的公有属性name='人’zhangsan.name='张三' # 对实例zhangsan的name属性重新赋值为'张三'print(zhangsan.name) # 输出>>>张三zhangsan.run() # 调用成员函数fun()zhangsan.say() # 调用成员函数say()print(zhangsan._Ren__money) # 另外一种访问私有属性的方式,仅在测试时使用print('#'*50)print(Ren.__dict__) # 调用内置属性'__dict__'
#!/usr/bin/python
#coding:utf-8class Name():var1 = '类属性,公有属性'__var2 = '类的私有属性'def fun(self):self.var2 = '对象的公有属性var2'self.__var3 = '对象的私有属性__var3'var4 = '函数fun的局部变量var4'tan = Name()print(tan.var1)
print(Name.var1)
qi = Name()
tan.fun()
print(tan.var2)#print(qi.var2) # 会报错,因为qi这个实例还没有调用fun()函数
#print(tan.var4) # 会报错,因为var4是局部变量只能在函数内部使用。

类的方法

和函数定义一样,但需要self作为第一个参数。
类的方法也分为:公有方法和私有方法。
公有方法:只有实例化之后才能被调用。
私有方法:不能被外部的类和方法调用,私有方法的定义和私有属性定义都是一样的,在方法前面加上’__'双下划线就可以了;
类方法:被classmethod()函数处理过的函数,能被类所直接调用,也能被对象所调用(是继承关系)
静态方法:相当于"全局函数",可以被类直接调用,可以被所有实例化对象共享,通过staticmethod()定义静态方法没有"self"语句;
self参数:用于区分函数和类的方法(必须有一个self),self参数表示指向对象本身。

#!/usr/bin/python
#coding:utf-8class Name():name = 'Jock'__money = '我有十块钱' # 定义私有属性__age = 24 # 定义私有属性def fun1(self): # 定义公有方法print(self.name)print('我是公有方法')#__fun2() # 直接调用__fun2会报错,提示NameError: name '_Name__fun2' is not definedself.__fun2() # 调用私有方法def __fun2(self): # 定义私有方法,只能在类定义里面被调用print(self.name)print('我是私有方法')def get(self,x): # 获取私有属性的值if x == 'money':return self.__moneyelse:return self.__agedef set(self,x): # 改变私有属性self.__age = x@classmethod # 装饰器,声明下面这个函数是动态方法,可以直接被类调用,这种方法最好def classFun(self): # 定义动态方法print(self.name)print('我是类方法')# 另外一种解决办法,使用classmethod()函数# classNewFun = classmethod(classFun)@staticmethod # 装饰器,声明下面这个函数是静态方法,可以直接被类调用,这种方法最好def staticFun(): # 不能有self,定义静态方法print(Name.name) # 需要通过Name.name调用类的name属性print('我是静态方法')# 另一种解决办法,使用staticmethod()函数# staticNewFun = staticmethod(staticFun)
"""
二者实际原理
动态方法是动态加载内部的属性和方法,现加载,节省空间,不过执行速度不如静态方法
静态方法是在执行前先加载静态方法的所有属性和方法,然后再执行,执行速度快,不过占用空间多
一般大数据才需要考虑资源空间效率问题
"""
print('#'*80)
tan = Name()
tan.fun1()
print('#'*80)
# Name.fun1 # 报错,因为公有方法必须实例化调用才行。类本身无法直接调用类自身的公有方法
Name.classFun()
print('#'*80)
Name.staticFun()
print('#'*80)
print(tan.get('age')) 获取类的私有属性
print('#'*80)
tan.set(20) # 设置类的私有属性
print(tan._Name__age) # 测试,访问私有属性

对象

对象:是类的一个实例,比如:大卡车。类是把对象抽象化,对象是把类实例化。这个有点像哲学上上的个体和整体。当然个体还可以继续细分,这种就是一种分而治之和分类思想。

对象的创建

创建对象的过程称之为实例化;当一个对象被创建后,包含三个方面的特性:对象的句柄、属性、方法。
1)句柄用于区分不同对象;
2)对象对象的属性和方法与类中的成员变量和成员函数对应。
注:还有继承、多态、析构函数、构造函数没有总结进去。

参考资料

《中谷教育视频》

后记:
我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技,扫描下方二维码或者搜索每日学一技关注。
这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!

学习笔记之——Python中类和对象的理解相关推荐

  1. Python学习笔记(13)-Python类与对象示例

    点此查看 零基础Python全栈文章目录及源码下载 本文目录 1. 简介 2. Python类的定义 3. Python类的动态语言特性 4. Python类中属性的访问控制 1. 简介 Python ...

  2. python学习笔记:python类和对象,文件操作,网络编程

    目录 一.python面向对象 1.类和对象的定义 2.单继承 3.多继承 4.成员属性 5.异常 6.@property 二.python文件操作 文件的打开和读写 文件对象接口汇总 三.pytho ...

  3. python编程语言继承_python应用:学习笔记(Python继承)

    学习笔记(Python继承)Python是一种解释型脚本语言,可以应用于以下领域: web 和 Internet开发 科学计算和统计 人工智能 教育 桌面界面开发 后端开发 网络爬虫 有几种叫法(父类 ...

  4. Noah的学习笔记之Python篇:装饰器

    Noah的学习笔记之Python篇: 1.装饰器 2.函数"可变长参数" 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.co ...

  5. 2021-09-01 学习笔记:Python爬虫、数据可视化

    2021-09-01 学习笔记:Python爬虫.数据可视化 结于2021-09-07: 内容来自 成都工业大学 数字媒体专业实训: 主要内容: PyCharm开发Python脚本的基础配置: Pyt ...

  6. 混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解

    混淆概念详细解析:Python中类.对象.方法.函数和属性的区别和理解 前言 一.类.对象.方法.函数和属性的区别和理解 二.一个类的简单案例和对各种概念的理解 三.总结 欢迎学习交流! 邮箱: z- ...

  7. 软件调试学习笔记(一)—— 调试对象

    软件调试学习笔记(一)-- 调试对象 准备工作 调试器与被调试程序 DebugActiveProcess 连接调试器 分析kernel32!DebugActiveProcess 分析ntdll!Dbg ...

  8. JavaScript学习笔记05【高级——DOM对象】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  9. python3.4学习笔记(九) Python GUI桌面应用开发工具选择

    python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者 http://www.admin10000.com/document/9 ...

最新文章

  1. Android ImageView图片显示点击背景切换
  2. Nginx 0.8.5版本access.log日志分析shell命令
  3. 十进制与二进制八进制十六进制的相互转换
  4. java rmi接口 超时设置_Spring RMI客户端读超时设置 | 学步园
  5. 新年快乐轮播特效html,基于owl-carousel的卡片水平轮播展示特效
  6. 【主席树】bzoj1112: [POI2008]砖块Klo
  7. 制作日历组件,点击出来一个弹窗
  8. java 数组不重复_java如何找出数组中的不重复数字
  9. 使链接在新窗口中打开
  10. UVA11577 Letter Frequency【文本】
  11. 【word论文排版教程1】页面设置
  12. STM32F030F4P6单片机由外部时钟改为内部时钟
  13. Frodo and pillows _CF760B
  14. 完美池宇峰畅谈创业点滴 男怕入错行
  15. Linux命令ln -snf给文件创建软链接和硬链接
  16. 孩子们的世界很大,很大...(评刘海强日记)
  17. 图解Oracle数据库(二)
  18. 1月第4周安全回顾 移动安全受关注 黑客威胁公共设施
  19. Maven使用(1)
  20. 数据结构实践——B-树的基本操作

热门文章

  1. 用Pytorch实现RGB2LAB,LAB2RGB。
  2. Ubuntu16.04、Ubuntu18.04、Ubuntu20.04分区方案
  3. 数学分析公式LaTex练习-洛必达法则
  4. 使用JS实现前端缓存
  5. JVM:JVM常见参数配置
  6. 10行命令60秒快速定位性能瓶颈
  7. JZOJ6362. 【NOIP2019模拟2019.9.18】数星星(star)
  8. 360全景拍摄有哪些技巧?
  9. KunlunBase集群管理接口
  10. CodeForces 878 简要题解