Python——类和对象(二)
一、实例方法和自动绑定self
在类中定义的实例方法,Python会自动绑定方法的第一个参数(通常是self,下文也默认为self),第一个参数总会指向调用该方法的对象,因为实例方法(包括构造方法)第一个self参数会自动绑定,所以调用普通方法和实例方法时不需要为第一个参数传值(方法第一个参数代表的对象是不确定的,只有这个方法被调用,它代表的对象才会被确定下来)。
- self在构造函数中引用,表示该构造方法正在初始化的对象。
- self在普通实例方法中引用,表示调用该方法的对象。
例:
class a:
def __init__(self):
k1 = 1 # 在构造方法中定义k1局部变量
print ('k1的值:',k1)
self.k1 = 2 # self代表构造方法正在初始化的对象的k1实例变量变为2
print ('k1初始化后的值:',self.k1) def b(self):
print ('执行b方法') def c(self):
self.b() # 使用self参数引用调用c()方法的对象,不加self将会报错NameError: name 'b' is not defined
print ('执行c方法') A = a()
'''
构造函数执行了一遍,打印
k1的值: 1
k1初始化后的值: 2
'''
A.c()
'''
执行b方法
执行c方法
'''
如果在方法中把self参数作为返回值,则可以连续多次调用同一个方法,例:
class p:
def y(self):
print ('执行y方法')
return self P = p()
P.y().y().y().y()
'''
打印
执行y方法
执行y方法
执行y方法
执行y方法
<__main__.p object at 0x0000000002EAAC50>
'''
二、函数和方法的区别
调用类的方法可以以函数的方式执行它或者以方法调用,区别如下:
- 函数:直接使用类名.实例名调用,需要手动传self。
- 方法:如果是一个函数,使用函数名调用,如果是一个方法,使用对象.实例名调用,不需要手动传self。
例:
class a:
def __init__(self):
k1 = 1
print ('k1的值:',k1)
self.k1 = 2
print ('k1初始化后的值:',self.k1) def b(self):
print ('执行b方法') def c(self):
self.b()
print ('执行c方法') # 实例化
A = a()
A.c() # 方法
a.c(A) # 函数,需要手动传self # 可以使用ininstance()函数判断是函数还是方法
from types import FunctionType,MethodType print (isinstance(A.c,MethodType)) # 打印 True
print (isinstance(A.c,FunctionType)) # 打印 False print (isinstance(a.c,MethodType)) # 打印 False
print (isinstance(a.c,FunctionType)) # 打印 True
Python——类和对象(二)的更多相关文章
- python类与对象各个算数运算魔法方法总结
1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...
- python 类和对象的属性
python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象. 1. 父类的对象属性会被子类的对象继承. 2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性 ...
- 一文讲全了Python 类和对象内容
摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan . Pytho ...
- python类、对象
python类.对象 学习完本篇,你将会深入掌握 什么是类,对象 了解类和对象之间的关系 能独立创建一个People(人类),属性有姓名.性别.年龄.提供一个有参的构造方法,编写一个show方法,输出 ...
- python 类和对象
类和对象 类 1.类的组成 数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用 属性引用:类名.属性(增删改查) 实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...
- Python类和对象
目录 类与对象 其他方法 继承 经典类和新式类 派生 组合 接口.归一化设计与抽象类 继承实现的原理 子类中调用父类的方法 指名道姓 super()方法 多态与多态性 封装 单下划线开头 双下划线开头 ...
- python 类,对象
声明类 ''' class 类名: '类的文档字符串' 类体 ''' #我们创建一个类 class Data: pass 声明类 class Person: #定义一个人类 role = 'perso ...
- (8)python 类和对象
一.类和对象 python可以动态的添加删除变量和方法 类中的方法至少要有一个参数,第一个参数会被绑定到类的实例上,通常命名为self 1.构造函数 类中的构造方法名为 __init__(self,. ...
- [python]类与对象-下
[实例对象]可以简称为[实例] 一.类与对象的关系 [类]是[对象]的模板. [类]就像工厂的模具,以它为模板,造出来的成千上万的产品,才是被我们消费.购买.使用,真正融入我们生活的东西.这些产品,在 ...
- python 类、对象、方法、属性
在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...
随机推荐
- class 绑定的数据对象不必内联定义在模板里
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Spring源代码分析:PropertiesLoaderSupport
概述 Spring PropertiesLoaderSupport是一个抽象基类,它抽象了从不同渠道加载属性的通用逻辑,以及这些属性应用优先级上的一些考虑.它所提供的这些功能主要供实现子类使用.Spr ...
- selenium反爬机制
使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...
- git一些常用配置
1. git config git config 分为全局和局部 全局:git config --glabol 局部:git config 最终会生成配置文件,一般在~/.gitconfig. 2. ...
- legend3---开发总结1
legend3---开发总结1 一.总结 一句话总结: 管它柳绿花红,我自潇洒人间 1.数据库字段命名:比如l_id? 见名知意,字段唯一,方便连表 2.所有方法在服务端都要加验证? 比如先查数据再更 ...
- Python数据预处理(sklearn.preprocessing)—归一化(MinMaxScaler),标准化(StandardScaler),正则化(Normalizer, normalize)
关于数据预处理的几个概念 归一化 (Normalization): 属性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现. 常 ...
- HTML、CSS之查遗补漏
inline-block3个额外像素宽度问题 先看下例子: Title .sp{ /*border: 1px solid lightcoral;*/ display: inline-block; he ...
- ClientDataSet中修改,删除,添加数据和Delta属性
ClientDataSet中使用Post提交变更的数据时,实际上并没有更新到后端数据库中,而是提交到了由DataSnap管理的数据缓冲区中.当使用了ClientDataSet.ApplyUpDates ...
- MapReduce\Tez\Storm\Spark四个框架的异同
1) MapReduce:是一种离线计算框架,将一个算法抽象成Map和Reduce两个阶段进行 处理,非常适合数据密集型计算. 2) Spark:MapReduce计算框架不适合迭代计算和交互式计算, ...
- Java如何获取ResultSet结果中的每一列的数据类型
示例代码片段: ResultSet resultSet = statement.executeQuery(sql); ResultSetMetaData metaData = resultSet.ge ...