美文网首页
类的调用和self的理解

类的调用和self的理解

作者: 阿互 | 来源:发表于2019-10-31 15:17 被阅读0次
类的调用.png

调用的关键在第7行代码:my_computer = Computer()。这个过程叫作:类的实例化,即在某个类下创建一个实例对象。

倒数第二行:my_computer.screen先是获取到类属性screen对应的值True,再用print()打印出来。

最后一行:my_computer.start()调用方法start(),这个方法的功能是直接打印出'电脑正在开机中……'。

细心的同学可能会有这样的疑惑:为什么实例调用方法时不用传参,定义时不是有个参数self吗?

这就是参数self的特殊之处:在定义时不能丢,在调用时要忽略。至于它的作用,容我再卖个关子。

正式揭秘特殊参数self的作用:self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行。

换言之,self 是所有实例的替身,

如果要在类的外部调用类属性,我们得先创建一个实例,再用实例名.属性的格式调用吗?

那么如果想在类的内部调用类属性,而实例又还没创建之前,我们就需要有个变量先代替实例接收数据,这个变量就是参数self。

正确的写法是这样子的:(留意第六行)


传参self2.png

当最后一行代码运行时,实例person会像参数一样传给self,替换掉self,第六行的self.name等价于person.name

person.name就相当于调用了类属性name(即'吴枫'),然后跑完整个方法。

可见,self的作用相当于先给实例占了个位置,等到实例创建好就“功成身退,退位让贤”。

同理,如果想在类的方法内部调用其他方法时,我们也需要用到self来代表实例。

阅读代码后点击运行:(重点看第七行)


传参self2.png

当最后一行实例person调用say()方法时,便会执行say()内部的语句(第七行开始)。

此时self.greeting()就变成person.greeting(),也就是调用实例方法greeting(),打印出'很高兴遇见你',再打印出'我来自中国'。

综上,所以我们说self代表的是类的实例本身,方便数据的流转。对此,我们需要记住两点:

第一点:只要在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参)。

第二点:当在类的方法内部想调用类属性或其他方法时,就要采用self.属性名self.方法名的格式。

相关文章

  • 类的调用和self的理解

    调用的关键在第7行代码:my_computer = Computer()。这个过程叫作:类的实例化,即在某个类下创...

  • self和super的区别

    self和super的区别 self调用自己方法,super调用父类方法 self是类,super是预编译指令 [...

  • self class super superclass

    [self class]当前类调用方法 调用者是当前类 [self superclass] 调用父类的方法 调用者...

  • self和super区别

    self:调用自己方法,它是类super:调用父类方法,它是预编译指令【self class】和【super cl...

  • Objective-C 类方法中使用self注意事项

    在类(实例)方法中使用self调用方法 在实例方法中self【可以】调用实例方法(最常见)self【不可以】调用类...

  • python self.__class__的用法

    一般父类使用self.__class__去调用某一个属性或者方法, 简单的理解就是调用它子类的方法和属性.

  • iOS 中 self 和 super 的区别

    一、要点: self调用自己方法,super调用父类方法 self是类,super是预编译指令 [self cla...

  • iOS 之self和super区别

    要点: self 调用自己方法,super 调用父类方法 self是类隐藏参数,super是预编译指令 【self...

  • python 中的 self

    公共类: 方法调用的py文件主要内容: 原来理解的偏差:方法 user_login(self, driver , ...

  • Swift---封装Nib取View(面向协议的应用)

    9,self和Selfself表示哪个对象调用了我Self表示哪个类调用了我 10, struct静态方法用sta...

网友评论

      本文标题:类的调用和self的理解

      本文链接:https://www.haomeiwen.com/subject/dcdtbctx.html