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

详解Python对象本身self

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

20020

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 存的就是调用该实例方法的实例对象的引用 所以!

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

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,此时会真的把对象进行删除

46530

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方法。 这似乎不是我们想要的,如何解决呢?

40620

关于OC代理的问题:self.delegate = self

Delegate 模式其实就是 NSProxy 设计模式的一种衍生版,它们共同的特点可以理解为都是传递对象的消息,主要区别如下: 1....Delegate 无非就是把 A 的消息传递给代理对象 B,self.delegate = self 直接把代理对象设置为自己,这样省去了引入第三方代理,这种做法大部分情况是为了图个方便,一般出现在使用第三方闭源代码以及系统类...(如:UITextField等)的情况下,因为我们无法获知内部消息是如何传递的,只能通过代理对象获知消息。...难道是 self.delegate = self 导致的?...可以肯定的是,在没有任何方法调剂的情况下,即 “self.delegate == self”,是不会出现死循环的问题的。

1.4K20

$this、self和static

image.png 关于类属性、方法调用有3个 $this、self、static $this->foo(); selff::foo(); static::foo(); $this指向当前对象...所以说,this 就是指向当前对象,不指向其他对象或类。 self::指向类,一般用来访问当前类的静态变量和静态方法,运行之前已经确定指向哪个类。 <?...和 this 不同,它指向类本身,不指向任何实例化对象,一般用来访问类中的静态变量和静态方法; 上例中 new 了两个对象,并修改了其中一个对象的 name 属性,另一个对象的 name 属性值也改变了...,所以说,self 是指向当前类的,和对象无关,所有的对象共用一个值。...static 和 self 一样,都是指向类,一般都用来访问类中的静态变量和静态方法,但是又有一些不一样,具体来讲:self 写在哪个类里,实际调用的就是这个类;static 则是写在父类里,然后通过子类用到了这个

73220

Python「面向对象基本语法2」引用概念、方法中的self参数、代码示例

代码验证:class Cat: def eat(self): print("小猫爱吃鱼") def drink(self): print("小猫要喝水")# 创建猫对象名字叫...在类封装的方法中输出对象属性由哪一个对象调用的方法,方法内的self就是哪一个对象的引用。...在类封装的方法内部,self就表示当前调用方法的对象自己。在调用方法时:程序员不需要传递self参数在方法内部: 可以通过self. 访问对象的属性,也可以通过self....点击F7,进入到第一个方法之后,可以看到self同样是一个猫对象self的内存地址同样是76A0,self的内存地址和tom的内存地址完全是一模一样的。...利用这个断点调试,可以看出,self就是这个tom变量指向的猫对象,可以得出:哪一个对象调用的方法,self就是哪一个对象的引用。再把代码稍作修改如下图:通过self.

77420

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

defmove(self): print('车在奔跑...')..._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

37640

PHP面向对象程序设计中的self、static、parent关键字用法分析

本文实例讲述了PHP面向对象程序设计中的self、static、parent关键字用法.分享给大家供大家参考,具体如下: 看到php里面有关于后期静态绑定的内容,虽然没有完全看懂,但是也收获不少东西。...<br/ "; //使用类名调用静态属性 echo self::$static."<br/ "; //self调用静态属性 echo self::show()."...<br/ "; //self调用非静态方法 echo self::get()."<br/ "; //self调用静态方法 echo static::$static."...[注1] 3)self::foo();这个self::是在B中使用的,所以self::等价于B::,但是B没有实现foo方法,B又继承自A,所以我们实际上调用了A::foo()这个方法。...输出结果: A C fooB 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结

36240
领券