(1)self调用自己方法,super调用父类方法 (2)self是类,super是预编译指令 (3)[self class]和[super class]输出是一样的 ...①当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法。...②当使用 self 调用时,会使用 objc_msgSend 函数: id objc_msgSend(id theReceiver, SEL theSelector, ...)。...以 [self setName:] 为例,编译器会替换成调用 objc_msgSend 的函数调用,其中 theReceiver 是 self,theSelector 是 @selector(setName...:),这个 selector 是从当前 self 的 class 的方法列表开始找的 setName,当找到后把对应的 selector 传递过去。
{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能。...这里我主要谈的是this,self,parent 三个关键字之间的区别。从字面上来理解,分别是指这、自己、父亲。...PHP中this,self,parent的区别之二self篇 此篇我们就self的用法进行讲解 首先我们要明确一点,self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量...假如我们使用类里面静态(一般用关键字static)的成员,我们也必须使用self来调用。还要注意使用self来调用静态变量必须使用:: (域运算符号),见实例。 <?...{三}PHP中this,self,parent的区别之三parent篇 此篇我们就parent的用法进行讲解。
当只有一个类,没有任何继承关系的时候,这俩是一样的,也就是返回当前类的实例对象 当存在继承关系的时候,两者有区别 比如 new self在父类里,调用的时候会返回当前这个类的实例对象 比如 new static...>assertTrue(true); } } class Father { public static function getSelf() { return new self...都是使用Son类调用,self那个返回的Father的对象 ,static是Son的对象
php中self与static的区别 通过一些示例,我们可以很容易看出self和static的区别。假定我们有class Car – 它有两个方法,model和getModel。...注意,这里我们使用了关键字self。...关键字self使得我们调用了class Car的getModel方法,输出了文本“I am a Car!”。...对于self的解释 关键字“self”的工作原理是:它会调用当前类(current class)的方法。因为model方法只在class Car中定义的,所以对它来说当前类就是class Car。...php中的self和static 现在我们将例子中的self用static替换,可以看到,两者的区别在于:self引用的是当前类(current class)而static允许函数调用在运行时绑定调用类
在php的面向对象编程中,总会遇到 class test{ public static function test(){ self::func(); static::func();...} public static function func(){} } 可你知道self和static的区别么?...其实区别很简单,只需要写几个demo就能懂: Demo for self: class Car { public static function model(){ self::getModel...在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就不去了解了。...总结呢就是:self只能引用当前类中的方法,而static关键字允许函数能够在运行时动态绑定类中的方法。
python 中的self和cls 一句话描述:self是类(Class)实例化对象,cls就是类(或子类)本身,取决于调用的是那个类。...b.foo3("大熊猫") B.foo3("大熊猫") @staticmethod和@classmethod的用法 相同: @staticmethod和@classmethod都可以直接类名.方法名()来调用 区别...B, hello', name, cls.a) 重点应关注@staticmethod和@classmethod调用本类或其他类的函数和属性的区别 例子1: 关键看第二句 subclass B, hello...和cls的区别 1、self表示一个具体的实例本身。...总结 到此这篇关于深入浅析python 中的self和cls的区别的文章就介绍到这了,更多相关python 中的self和cls内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持
简介 在使用PHP代码时,您可能经常会遇到parent::、static::和self::。但是当你第一次作为一个开发人员开始的时候,有时候你会很困惑,不知道它们是做什么的,以及它们之间的区别。...在我第一次作为开发人员开始工作后的很长一段时间里,我认为static::和self::是完全一样的。 parent::是什么?...现在我们已经知道了self::的作用,让我们来看看static::。...什么时候使用self::或 static::? 现在我们对self::和static::之间的区别有了一个大致的了解,让我们快速介绍一下如何决定在自己的代码中使用哪一个。...一般来说,最好在编写代码时根据具体情况决定应该使用static::还是self::。
在iOS开发过程中,我们用@proprety声明一个属性后,在代码中我们可以用self.xx与_xx来获取到这个属性。但是一直有一个疑惑,那就是这两个之间有什么区别呢?...1 @property 与 @synthesize 在说self.xx与_xx之前,我们先了解一下@property 以及 @synthesize之间的区别和联系,说到@property 以及 @synthesize...,我们就不得不提到iOS中 成员变量和属性 之间的区别和联系了。 ...同时,我们提到了self.xx和_xx的一点区别,其中self.xx是调用的xx属性的get/set方法,而_xx则只是使用成员变量_xx,并不会调用get/set方法。...两者的更深层次的区别在于,通过存取方法访问比直接访问多做了一些其他的事情(例如内存管理,复制值等),例如如果属性在@property中属性的修饰符有retain,那么当使用self.xx的时候相应的属性的引用计数器由于生成了
下面我们举个栗子: class Father { public static function getSelf() { return new self(); } public static...Son echo get_class(Father::getSelf()); // Father echo get_class(Father::getStatic()); // Father new self...这里面注意这一行 get_class(Son::getStatic()); 返回的是 Son 这个 class, 可以总结如下: self 返回的是 new self 中关键字 new 所在的类中...,比如这里例子的 : public static function getSelf() { return new self(); // new 关键字在 Father 这里 } 始终返回 Father...Son::getStatic()) 返回的是 Son, Father 执行 get_class(Father::getStatic()) 返回的是 Father 而在没有继承的情况下,可以认为 new self
本文实例讲述了php 中self,this的区别和操作方法。...这里我主要谈的是this,self关键字之间的区别。从字面上来理解,分别是指这、自己。先初步解释一下,this是指向当前对象的指针(可以看成C里面的指针),self是指向当前类的指针。...用self时,可以不用实例化的 class self_test { static $instance; public function __construct(){ self::$instance...= 'instance';//静态属性只能通过self来访问 } public function tank(){ return self::$instance;//访问静态属性 }...} $str = new self_test(); echo $str- tank(); 页面输出: instance class self_test { static $instance;
self - 就是这个类,是代码段里面的这个类。...还是看看老外的专业解释吧: self refers to the same class whose method the new operation takes place in....In the following example, B inherits both methods from A. self is bound to A because it's defined in...class A { public static function get_self() { return new self(); } public static function...get_static() { return new static(); } } class B extends A {} echo get_class(B::get_self())
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。...这个特别的变量指对象本身,按照惯例它的名称是self。 虽然你可以给这个参数任何名称,但是强烈建议你使用self这个名称——其他名称都是不赞成你使用的。...): print "hello self!" ...In [4]: #如果去掉self的话就会报错 n [6]: class Testself: def testself(): print "hello self!" ...====================================================================== 类将它们的第一个参数绑定到所属的实例上,这正是类和函数的区别
self!...if(self!=top){ top.location=self.location; } top指向最顶层框架的window对象,self指向当前框架的window对象。...如果网页中没有iframe,则top和self是同一个值,所以这段代码可以防止自己的网页被别人用iframe的方式嵌入到其它网页中去。...self 属性返回指向当前 window 对象的引用,利用这个属性,可以保证在多个窗口被打开的情况下,正确调用当前窗口内的函数或属性而不会发生混乱。self 属性是只读的。...注:window、self、window.self 是等价的。
#定义`地瓜`类 classSweetPotato: '这是烤地瓜的类' #定义初始化方法 def__init__(self): self.cookedLevel =0 self.cookedString...="生的" self.condiments = [] 4.添加"烤地瓜"方法 ?...总结 ·Python中没有像C++中public和private这些关键字来区别公有属性和私有属性 ·它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性
引言 之前的文章我们已经讲过,在 PHP 类的创建过程中,使用 self 作为类本身的引用,使用 $this 作为类对象的引用。 ? 而在 self 和 static 的使用上,有这细微的差别。...特别是类继承过程中,self 可能带来意想不到的反应,也正如那篇文章所说,建议使用 static 作为类本身的引用。 本文再来探讨,类内的 new self 与 new static 有什么区别。...学习时间 self 总是指向 new 关键字所声明的类;static 在静态绑定中,可以指向层级结构中的任意类。 下面举一个例子。 ? 类B继承了类A的方法。...对于 get_self 方法,返回的是类A本身。而static则返回的是调用者的类,也就是说,谁调用,static就指向谁。self 则持续地指向声明的类。...因为 self 引用的是类本身,调用 class 静态方法也完全行得通。
本文实例讲述了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方法。 这似乎不是我们想要的,如何解决呢?
背景 最近作者在进行工程代码分析时,经常看到这样的代码: self.delegate = self //自己的代理设置为自己 于是心中产生了不少疑问,为什么会这样写?这样写是否是正确的?...Delegate 模式其实就是 NSProxy 设计模式的一种衍生版,它们共同的特点可以理解为都是传递对象的消息,主要区别如下: 1....难道是 self.delegate = self 导致的?...可以肯定的是,在没有任何方法调剂的情况下,即 “self.delegate == self”,是不会出现死循环的问题的。...在没有考虑清楚前,避免使用 self.delegate = self。 2. 破除死循环,解决上述问题,只需停止消息转发即可。
形式1: definit(self)class Student_Grade: def __init__(self): # 类似于c++中的默认构造函数 self.name =...None self.grade = None def print_grade(self): print("%s grade is %s" % (self.name...= name self.grade = grade def print_grade(self): print("%s grade is %s" % (self.name...总结1、self是形式参数,当执行s1 = Student(“Tom”, 8)时,self等于s1;当执行s2 = Student(“sunny”, 7)时,self=s2。...2、两种方法的区别在于定义函数时属性赋值是否允许为空和实例化时是否直接传入参数
意思是block中使用了self的实例变量_newPossword,因此block会隐式的retain住self。...Xcode认为这可能会给开发者造成困惑,或者因此而因袭循环引用,所以警告我们要显示的在block中使用self,以达到block显示retain住self的目的。...解决方案: xcode9.3后创建的项目 Implicit retain of 'self'within blocks 默认为YES改为NO即可! ?...Xcode提示,改成self-> _newPossword 也可。
image.png 关于类属性、方法调用有3个 $this、self、static $this->foo(); selff::foo(); static::foo(); $this指向当前对象...self::指向类,一般用来访问当前类的静态变量和静态方法,运行之前已经确定指向哪个类。 <?...class Person { public static $name = "小红"; public static function getName() { echo self...不同,它指向类本身,不指向任何实例化对象,一般用来访问类中的静态变量和静态方法; 上例中 new 了两个对象,并修改了其中一个对象的 name 属性,另一个对象的 name 属性值也改变了,所以说,self...static 和 self 一样,都是指向类,一般都用来访问类中的静态变量和静态方法,但是又有一些不一样,具体来讲:self 写在哪个类里,实际调用的就是这个类;static 则是写在父类里,然后通过子类用到了这个
领取专属 10元无门槛券
手把手带您无忧上云