Python中面向对象的讲解(1)
面向对象编程的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)相关推荐
- Python中面向对象的讲解(3)
1.私有属性和私有方法 封装的意义: 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理: 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了: 对类的属性和方法增加 访问权限控制. 私 ...
- Python中面向对象的讲解(2)
1.继承 在程序中,继承描述的是多个类之间的所属关系. 如果一个类A里面的属性和方法可以复用,则可以通过继承的方式,传递到类B里. 那么类A就是基类,也叫做父类:类B就是派生类,也叫做子类. 案例: ...
- python中split()函数讲解
python中split()函数讲解 本文讲述的是string.split(s[, sep[, maxsplit]]),针对string类型的split()函数.它主要是切割字符串,结果返回由字符串元 ...
- python中面向对象_简述Python中的面向对象编程的概念
面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...
- python中面向对象的缺点_最简单的方法搞懂Python面向对象
1.面向对象介绍 2.类和对象 3.面向对象基本语法 面向对象与面向过程面向过程:根据业务逻辑从上到下写代码. 面向对象:将变量与函数绑定到一起,分类进行封装,每个程序只要负责分配给自己的分类,这样能 ...
- 简述python中面向对象的概念_简述Python中的面向对象编程的概念
面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...
- python中面向对象编程简称为_Python基础-面向对象编程
本文完全转载自廖雪峰大神的教程: 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- Python中面向对象的编程
Python面向对象的编程 1概述 (1)面向对象编程 面向对象的编程是利用"类"和"对象"来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是 ...
- python中pickle模块讲解
在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间.Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象 ...
最新文章
- leetcode-402 移掉K位数组
- django之允许外部机器访问
- python环境配置与pytorch下载
- 操作系统中的同步和异步
- javascript设计模式系列 - LukeLin - 博客园
- ssl2648-线段树练习5【线段树】
- 腾讯云直播sdk_官方推荐 | 2分钟带你认识腾讯云直播 CSS
- SES2 LED控制
- 根据控件ID得到句柄
- 河流逻辑结构图生成方法
- struts2编辑框中自动填充已经有的列表对应的值
- 关于WORD VBA学习使用心得
- 【考研·收藏】考研数学常用希腊字母表(数学符号及读法大全)
- ASICC码对照表整理
- 怎么在添加为知笔记编辑器/为知笔记怎么用其他编辑器编辑/为知笔记怎么才能用Word/notepad++编辑
- C语言外卖订单管理系统上班,外卖订单管理系统
- 记bilibili 2021 1024程序员节安全攻防挑战赛
- linux上的字典和数组中,centos安装词典——图形界面的和命令行
- 基于多尺度注意力网络单图像超分(MAN)
- 左右手桌面股票盯盘常见问题解答