首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详解Python对象本身self

大家学Python面向对象的时候,总会遇到一个让人难以理解的存在:self 这个self到底是谁啊,为什么每个类实例方法都有一个参数self,它到底有什么作用呢?...「先下结论:类实例化后,self即代表着实例(对象)本身」 想要理解self有个最简单的方法,就是你把self当做「实例(对象)的身份证。」...Python的类不能直接使用,只有通过创建实例(对象)才能发挥它的功能,每个实例(对象)都是独一无二的,它可以调用类的方法、属性。类就像灵魂附体一样,让实例(对象)有了自己(self)的功能。...(方法),而Python中的实例(对象)也可以凭着self去调用类的方法。...上面是用类比的方法解释了下self的含义,说到底self就是代表着实例本身,「当某个实例(对象)调用类方法时,该对象会把自身的引用作为第一个参数自动传给该方法,而这第一个参数就是self。」

28620

Python - 面向对象编程 - self 参数

在类里面,所有实例方法都需要加 self 参数,且排在第一个,有且仅有一个 self 参数的含义 在类中定义的方法,第一个参数 self 指向调用该方法的实例对象,在方法中通过 self.属性 这样的形式访问对象的实例属性...如何区分不同的房子:通过 self 参数,可以保证每个房子的主任仅能进入自己的房子(每个实例对象只能调用自己的实例属性和实例方法) 重点 一个类可以产生多个实例对象,当某个实例对象调用实例方法,该对象会把自身的引用作为第一个参数自动传递给该方法...# 实例对象一 blog1 = PoloBlog() blog1.say() print("实例对象 blog1 id is ", id(blog1)) # 实例对象2 blog2 = PoloBlog...() blog2.say() print("实例对象 blog2 id is ", id(blog2)) # 输出结果 构造方法:self is <__main__.PoloBlog object...实例对象 blog2 id is 4555557568 很明显,self 存的就是调用该实例方法的实例对象的引用 所以!

39330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面向对象编程-OOP1.面向对象编程介绍2.定义类3.魔法方法4.self

    1.面向对象编程介绍 面向对象(object-oriented ;简称: OO)至今还没有统一的概念 我这里把它定义为:按人们 认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析..._init__()方法,在创建一个对象时默认被调用,不需要手动调用 __init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了...self作为第一个形参外还需要2个形参,例如__init__(self,x,y) __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去 3."...4.self 1.理解self ? 运行结果: ?...2.总结 ·所谓的self,可以理解为自己 ·可以把self当做C++中类里面的this指针一样理解,就是对象自身的意思 某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self

    39540

    Java面向对象介绍

    引言 面向对象,将跟对象有关的功能都封装在其内 面向对象三大特征:封装,继承,多态 找对象,创建对象,使用对象,并维护对象之间的关系。...类:对现实中事物的描述 对象:就是实实在在 存在的事物 映射到java中,描述就是class定义的类 具体对象就是对应java在堆内存中new建立的实体 类与对象: 设计图纸就是类,里面包含对象的描述:...比如 C 的 IO 库中的 FILE * 就可以看成是基于对象的。 面向对象:则在基于对象的基础上增加了多态性。所谓多态,就是可以用统一的方法对不同的对象进行同样的操作。...面向对象:是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。...大白话介绍面向对象和面向过程 面向过程就是将编程当成是做一件事,要按步骤完成,每一步就是一个过程。比如作菜,先放油,接着是放菜进去炒,然后放水,最后菜就做好了。

    51410

    Python 面向对象介绍

    一、类的实例化:调用类产生对象的过程称为类的实例化,实例化的结果是一个对象,或称为一个实例 1 class People: 2 def __init__(self,name,age,sex):...3 self.name=name 4 self.age=age 5 self.sex=sex 6 7 def run(self): 8...print('%s is running' %self.name) 实例化做了三件事 1、先产生一个空对象 2、自动触发类内部__init__函数的执行 3、将空对象,以及调用类括号内传入的参数,一同传给...__dict__) 三:对象属性的查找顺序:先找对象自己的名称空间---->类的名称空间 1 class People: 2 x=1 3 def __init__(self,name...,但是绑定给对象用的,绑定到不同的对象就是不同的 绑定方法,内存地址都不一样,但其实只想都是同一个功能 1 print(People.run) >>> <function People.run at

    30430

    self 应用

    #定义`地瓜`类 classSweetPotato: '这是烤地瓜的类' #定义初始化方法 def__init__(self): self.cookedLevel =0 self.cookedString...="生的" self.condiments = [] 4.添加"烤地瓜"方法 ?...总结:如果一个对象与另外一个对象有一定的关系,那么一个对象可用是另外一个对象的属性 4.保护对象的属性 如果有一个对象,当需要对其进行修改属性时,有2种方法 ·对象名.属性名=数据---->直接修改...总结: ·当有1个变量保存了对象的引用时,此对象的引用计数就会加1 ·当使用del删除变量指向的对象时,如果对象的引用计数不会1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,...变为1,如果再调用1次del,此时会真的把对象进行删除

    47530

    Python类和对象-给你介绍对象

    在面向对象思想中,一切皆是对象,每个对象都有它的属性个方法,每个对象都可以通过消息互相交互。 本文将侧重Python中类和对象的使用,更多面向对象思想可参考设计模式系列博客。...statement是类成员表达式,可以是属性或方法 举例: class TeatA(object): # 类名TestA value = 0 # 属性 def printvalue(self...): # 方法 print(self.value) 特别注意的是,类属性除了在class下显示的定义外,也能在方法中隐形的定义: class TestB(object): def...printvalue(self): self.value=0 # 隐形定义类属性value print(self.value) 类的实例化 ---- 实例化就是创建一个类的对象...类的方法 ---- 类的方法其实就是定义在类内部的函数,只不过函数的首个参数必须是self(代表自身)。类方法里面调用类本身的属性和方法都必须加上self

    34110

    腾讯云-对象存储介绍

    对象存储分享结构 首先介绍存储的分类,并主要介绍对象存储的分类,接着介绍用户的常见问题包括计费项和计费周期,最后介绍对象存储的控制台和使用案例。...腾讯云CDN产品使用介绍:https://www.bilibili.com/video/BV1ft4y1S7MS image.png 存储 存储大类 块存储(cbs,Cloud Block Storage...网站地址:https://cloud.tencent.com/product/cfs 对象存储(cos Cloud Object Storage):对象是文件的数据和一组属性信息的组合。...网站地址:https://cloud.tencent.com/product/cos 对象存储类型分类 标准存储 标准存储(默认)适用于实时访问大量热点文件、频繁的数据交互等业务场景。...我们可以在对象的“详情”中,如以下截图 image.png 对象存储计费方式 面向对象 免费额度 有效期 个人用户 50GB 标准存储容量 6个月 企业用户 1TB 标准存储容量 6个月 对象存储方式计费比较复杂

    19.8K3732

    php面向对象程序设计中self与static的区别分析

    本文实例讲述了php面向对象程序设计中self与static的区别。分享给大家供大家参考,具体如下: 1、假设我们有个Car类,它有2个方法:model()和getModel()。...class Car{ public function model(){ //这里我们使用了关键字self self::getModel(); } protected function getModel...(){ echo 'I am car'; } } 实例化后调用方法: $car = new Car(); $car- model(); // 输出:I am car 关键字self使得我们调用了Car...3、关键字self的工作原理是:它会调用当前类的方法。 因为model()方法只在Car类中定义的,所以对self来说当前类就是Car类。...self::getModel()就是调用Car类中的getModel方法。 这似乎不是我们想要的,如何解决呢?

    40820

    前端|窗口(window)对象介绍

    引言 window对象表示浏览器打开的窗口,在客户端JavaScript中window对象是全局的对象,由此可见window对象的重要的作用。...所以接下来我们就一起看一看window对象的相关知识吧。...详细介绍 2.1 创建窗口 窗口对象表示一个窗口或者框架,同时窗口对象除了是客户端JavaScript的全局对象外还实现了核心JavaScript所定义的所有全局属性和方法。...当然窗口对象的window属性和self属性引用都是自己的。 ? 图2.1.1 window对象的属性 ?...总结 window对象的重要性通过上面的示例,我们都有了一定的了解,但在这里我们只是对于window对象进行了简单的介绍,关于上面表格中window对象的属性和方法我们也只是举了几个简单的例子,窗口的相关操作还有很多

    1.8K20

    Promise对象状态属性介绍

    Promise对象状态属性1. pending当创建一个Promise对象时,初始状态是pending(待定)状态。这表示Promise对象尚未完成,异步操作仍在进行中。...2. fulfilled当异步操作成功完成时,Promise对象的状态将从pending转变为fulfilled(已完成)状态。在这种状态下,Promise对象将包含异步操作的结果值。...3. rejected当异步操作失败时,Promise对象的状态将从pending转变为rejected(已失败)状态。在这种状态下,Promise对象将包含一个错误对象,用于描述发生的错误。...示例代码下面是一个示例代码,演示了Promise对象的状态属性和它们的转换:// 创建一个简单的异步操作,返回一个Promise对象function performAsyncTask() { return...在控制台输出中,我们可以观察到Promise对象的状态属性的变化。初始状态为pending,当异步操作成功完成时,状态变为fulfilled,并输出异步操作的结果。

    41140

    JVM的内存对象介绍

    作为java程序员对应Object应该是非常熟悉的,但是对于对象在JVM中的一些情况并不是很清楚,所以本文就来记录下对象在JVM中的一些内容 对象的创建 java程序中创建对象的常用方式是: Object...如果该类没有被加载则先执行类的加载操作 如果该类已经被加载,则开始给该对象在jvm的堆中分配内存。分配规则后面介绍 虚拟机初始化操作,虚拟机对分配的空间初始化为零值。...执行init方法,初始化对象的属性,至此对象被创建完成。 java虚拟机栈中的Reference执行我们刚刚创建的对象。...在上面的过程中的类加载的过程,后面会单独介绍,而内存分配这块我们来介绍下 内存的分配原则 内存分配的基本原则: 序号 介绍 1 优先在Eden分配,如果Eden空间不足虚拟机则会进行一次MinorGC...对象的访问定位   建立对象是为了使用对象,java程序是通过栈上的reference数量来操作堆上的具体的对象,具体操作对象的方式有两种: 1.通过句柄访问对象 ?

    48020
    领券