Python中关于面向对象概念的详细讲解
作者:测试领头羊 发布时间:2022-07-31 08:04:40
面向对象编程的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=name
self.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=name
self.age=age
a=Func('大飞',24)
print(a)
调用__str__方法,输出结果是该方法的返回值
class Func(object):
def __init__(self,name,age):
self.name=name
self.age=age
def __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 =name
print("__init__方法被调用")
def __del__(self):
print("__del__方法被调用")
print("python解释器开始回收%s对象了" % self.name)
p = Dog('Bob')
del p
来源:https://blog.csdn.net/weixin_45043349/article/details/120625849


猜你喜欢
- 运行代码时,出现诸如这样的文件的权限有可能出问题,不过更多是路径本身有问题。比如,你的文件名是否正确,路径是否正确,路径后面是不是多了什么奇
- 爬虫所需要的功能,基本上在urllib中都能找到,学习这个标准库,可以更加深入的理解后面更加便利的requests库。首先在Pytho2.x
- #!/usr/bin/env python# -*- coding: utf-8 -*-import os, base64ico
- 1.下载Navicat for MySQL 15https://www.navicat.com.cn/download/navicat-fo
- 注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008).工作需要, 需要向SQL Server
- 目录前言初始化项目设计代码实现按需加载播放音频录音长按事件运行调试总结前言相信很多养猫的人都很想跟自己的猫进行沟通,当猫咪发出各种不同声音的
- 一、如果是刚刚删除,那么有两方法:首先用show parameter undo;命令查看当时的数据库参数undo_retention设置。显
- 本文主要介绍了python opencv 找出图像中的最大轮廓并填充,分享给大家,具体如下:import cv2import numpy a
- 一直有耳闻MySQL5.5的性能非常NB,所以近期打算测试一下,方便的时候就把bbs.kaoyan.com升级到这个版本的数据库。今天正好看
- 准备正常情况下,创建class的实例后,可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。首先定义一个classclass A(obj
- 推荐阅读:JS iFrame加载慢怎么解决在项目中经常要动态添加iframe,然后再对添加的iframe进行相关操作,而往往iframe还没
- 虽然每个图像具有多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来指示红、绿和蓝。但是到目前为止,我们仅展示了单个输入和单个输出通道的
- 在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别?上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助
- 本文实例讲述了MySQL学习笔记之创建、删除、修改表的方法。分享给大家供大家参考,具体如下:创建表:create table users(
- 0 引言年中购物618大狂欢开始了,各大电商又开始了大力度的折扣促销,我们的小胖又给大家谋了一波福利,淘宝APP直接搜索:小胖发福利,每天领
- 在Apache和FastCGI上使用Django,你需要安装和配置Apache,并且安装mod_fastcgi。 请参见Apache和mod
- 写在前面贪吃蛇,吃豆人,迷宫,井字游戏......这些小游戏我相信大家小的时候肯定玩过,或许在某个时段还沉迷过.随着年龄的增长,这些小游戏离
- (一)功能实现效果:选择文件的效果:标记预加水印的位置:(二)Python代码:# -*l- coding:utf-8 *import os
- 在工作中遇到过 个问题执行一条代码时间过长 而且还不报错,卡死在那。还要继续执行下面代码,如何操作。下面是个简单的实例pip安装 第三方ev
- Python是一种非常流行的脚本语言,而且功能非常强大,几乎可以做任何事情,比如爬虫、网络工具、科学计算、树莓派、Web开发、游戏等各方面都