一、实例方法和自动绑定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——类和对象(二)的更多相关文章

  1. python类与对象各个算数运算魔法方法总结

    1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...

  2. python 类和对象的属性

    python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象. 1. 父类的对象属性会被子类的对象继承. 2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性 ...

  3. 一文讲全了Python 类和对象内容

    摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan  . Pytho ...

  4. python类、对象

    python类.对象 学习完本篇,你将会深入掌握 什么是类,对象 了解类和对象之间的关系 能独立创建一个People(人类),属性有姓名.性别.年龄.提供一个有参的构造方法,编写一个show方法,输出 ...

  5. python 类和对象

    类和对象 类 1.类的组成    数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用  属性引用:类名.属性(增删改查)   实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...

  6. Python类和对象

    目录 类与对象 其他方法 继承 经典类和新式类 派生 组合 接口.归一化设计与抽象类 继承实现的原理 子类中调用父类的方法 指名道姓 super()方法 多态与多态性 封装 单下划线开头 双下划线开头 ...

  7. python 类,对象

    声明类 ''' class 类名: '类的文档字符串' 类体 ''' #我们创建一个类 class Data: pass 声明类 class Person: #定义一个人类 role = 'perso ...

  8. (8)python 类和对象

    一.类和对象 python可以动态的添加删除变量和方法 类中的方法至少要有一个参数,第一个参数会被绑定到类的实例上,通常命名为self 1.构造函数 类中的构造方法名为 __init__(self,. ...

  9. [python]类与对象-下

    [实例对象]可以简称为[实例] 一.类与对象的关系 [类]是[对象]的模板. [类]就像工厂的模具,以它为模板,造出来的成千上万的产品,才是被我们消费.购买.使用,真正融入我们生活的东西.这些产品,在 ...

  10. python 类、对象、方法、属性

    在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...

随机推荐

  1. Hibernate---进度1

    关联映射:http://www.cnblogs.com/huxi/archive/2009/12/15/1624988.html 关联映射,hibernate查询方式:http://www.cnblo ...

  2. 《Glibc内存管理》笔记DAY4

    目录 分箱式内存管理 Small bins Large bins 内容来源 分箱式内存管理   对于空闲的 chunk,ptmalloc 采用分箱式内存管理方式,根据空闲 chunk 的大小和处于的状 ...

  3. Windows使用Latex

    目录 安装Texlive 安装TeXstudio 编写简单的文章 教程 安装Texlive 到清华大学开源软件镜像站下载Texlive2019.iso文件 下载之后,如果有光驱就装载,没有的话就解压. ...

  4. js回车键事件

    js回车键事件 一.总结 一句话总结: $("#focus").keypress(function(event){if(event.which === 13) { /*点击回车要执 ...

  5. 关于Flutter启动项目白屏,报错[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(58)] Failed to setup Skia Gr context.问题的解决方案

    首先,环境如下: 1.系统:windows10 64位   Android SDK version: 28.0.3   Flutter SDK: v1.5.4-hotfix.2   模拟器: 网易Mu ...

  6. ES6展开运算符数组合并,函数传参

    定义: .展开运算符允许一个表达式在某处展开. 使用场景 1.展开函数在多个参数的地方使用 .意指用于函数传参 2.多个元素的地方使用,意指用于数组字面量 3.多个边框的地方使用,意指用于解构赋值 函 ...

  7. 一百四十八:部署python项目之环境依赖

    环境:centos7 + python3.6 准备工作,生成项目requirements.txt文件,用于存放第三方库和版本信息:pip freeze > requirements.txt,并且 ...

  8. 123457123457#0#-----com.yuming.ZuiNiuChengYu--前拼后广--最牛成语

    com.yuming.ZuiNiuChengYu--前拼后广--最牛成语

  9. 启后台JOB处理单据遇到锁定问题

    /用户XXX已经处理采购凭证 9000036590 DN过账失败:/已冻结临时过账:用户 XXX已冻结编号范围 /用户XXX已经处理采购凭证 9000036589   ???问题:怎么检查采购订单正在 ...

  10. jQuery BlockUI Plugin Demo 5(Simple Modal Dialog Example)

    Simple Modal Dialog Example This page demonstrates how to display a simple modal dialog. The button ...