面向对象编程的2个非常重要的概念:
类和对象

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类。

类用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类是由三部分构成:
类的名称
类的属性
类的方法

格式如下:

# 类名
class Func(object):# 类的属性i=123# 类的方法def f(self):print('6666')# 实例化类
a=Func()
# 访问类的属性
print(a.i)
# 调用类的方法
a.f()

object 是Python 里所有类的最顶级父类;
类名 的命名规则按照"大驼峰命名法";
f 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量 这个变量指向了实例对象

魔法方法

1.init

Python 的类里提供的,两个下划线开始,两个下划线结束的方法,就是魔法方法,init()就是一个魔法方法,通常用来做属性初始化 或 赋值 操作(作用)。
如果类面没有写__init__方法,Python会自动创建,但是不执行任何操作
如果为了能够在完成自己想要的功能,可以自己定义__init__方法
所以一个类里无论自己是否编写__init__方法 一定有__init__方法

案例:

# 类名
class Func(object):def __init__(self,name,age):self.name=nameself.age=age# 类的属性i=123# 类的方法def f(self):print('我的名字叫%s,今年%d岁了'%(self.name,self.age))# 实例化类
a=Func('大飞',24)
# 访问类的属性
print(a.i)
# 调用类的方法
a.f()

init(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外还需要2个形参,例如__init__(self,x,y)

注意:
1). 在类内部获取 属性 和 实例方法,通过self获取;
2). 在类外部获取 属性 和 实例方法,通过对象名获取。
3). 如果一个类有多个对象,每个对象的属性是各自保存的,都有各自独立的地址;
4). 但是实例方法是所有对象共享的,只占用一份内存空间。类会通过self来判断是哪个对象调用了实例方法。

2.str

str 如果一个类中定义了__str__方法,在打印对象时,默认输出该方法的返回值,没有定义会返回对象的地址

class Func(object):def __init__(self,name,age):self.name=nameself.age=agea=Func('大飞',24)
print(a)


调用__str__方法,输出结果是该方法的返回值

class Func(object):def __init__(self,name,age):self.name=nameself.age=agedef __str__(self):return '我的名字叫%s,今年%d岁了'%(self.name,self.age)a=Func('大飞',24)
print(a)


总结:实例化对象时会调用__str__()方法,如果没有定义__str__()方法会打印一个对象的地址,如果定义__str__()并且有返回值,就会打印其中的返回值
3.del

当删除对象时,python解释器会默认调用一个方法,这个方法为__del__()方法

class Dog(object):def __init__(self,name):self.name =nameprint("__init__方法被调用")def __del__(self):print("__del__方法被调用")print("python解释器开始回收%s对象了" % self.name)
p = Dog('Bob')
del p

Python中面向对象的讲解(1)相关推荐

  1. Python中面向对象的讲解(3)

    1.私有属性和私有方法 封装的意义: 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理: 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了: 对类的属性和方法增加 访问权限控制. 私 ...

  2. Python中面向对象的讲解(2)

    1.继承 在程序中,继承描述的是多个类之间的所属关系. 如果一个类A里面的属性和方法可以复用,则可以通过继承的方式,传递到类B里. 那么类A就是基类,也叫做父类:类B就是派生类,也叫做子类. 案例: ...

  3. python中split()函数讲解

    python中split()函数讲解 本文讲述的是string.split(s[, sep[, maxsplit]]),针对string类型的split()函数.它主要是切割字符串,结果返回由字符串元 ...

  4. python中面向对象_简述Python中的面向对象编程的概念

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...

  5. python中面向对象的缺点_最简单的方法搞懂Python面向对象

    1.面向对象介绍 2.类和对象 3.面向对象基本语法 面向对象与面向过程面向过程:根据业务逻辑从上到下写代码. 面向对象:将变量与函数绑定到一起,分类进行封装,每个程序只要负责分配给自己的分类,这样能 ...

  6. 简述python中面向对象的概念_简述Python中的面向对象编程的概念

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...

  7. python中面向对象编程简称为_Python基础-面向对象编程

    本文完全转载自廖雪峰大神的教程: 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  8. ​Python中面向对象的编程

    Python面向对象的编程 1概述 (1)面向对象编程 面向对象的编程是利用"类"和"对象"来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是 ...

  9. python中pickle模块讲解

    在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间.Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象 ...

最新文章

  1. leetcode-402 移掉K位数组
  2. django之允许外部机器访问
  3. python环境配置与pytorch下载
  4. 操作系统中的同步和异步
  5. javascript设计模式系列 - LukeLin - 博客园
  6. ssl2648-线段树练习5【线段树】
  7. 腾讯云直播sdk_官方推荐 | 2分钟带你认识腾讯云直播 CSS
  8. SES2 LED控制
  9. 根据控件ID得到句柄
  10. 河流逻辑结构图生成方法
  11. struts2编辑框中自动填充已经有的列表对应的值
  12. 关于WORD VBA学习使用心得
  13. 【考研·收藏】考研数学常用希腊字母表(数学符号及读法大全)
  14. ASICC码对照表整理
  15. 怎么在添加为知笔记编辑器/为知笔记怎么用其他编辑器编辑/为知笔记怎么才能用Word/notepad++编辑
  16. C语言外卖订单管理系统上班,外卖订单管理系统
  17. 记bilibili 2021 1024程序员节安全攻防挑战赛
  18. linux上的字典和数组中,centos安装词典——图形界面的和命令行
  19. 基于多尺度注意力网络单图像超分(MAN)
  20. 左右手桌面股票盯盘常见问题解答

热门文章

  1. 14、MySQL位运算符
  2. 1116 c语言竞赛 (20 分)【难度: 一般 / 知识点: 模拟】
  3. 3.2.3 页面置换算法
  4. Spring boot配置文件值注入
  5. Freemarker日期时间类型
  6. MySQL解决root用户密码丢失问题
  7. 安装pyqt和pycharm配置
  8. 五分钟入门文本处理三剑客grep awk sed
  9. Hibernate @OneToMany 及 @Cascade级联操作
  10. JavaScript教程之快速入门