zoukankan      html  css  js  c++  java
  • Python实例化过程简单介绍

    贴上示例代码

     1 class Foo(object):
     2     def __init__(self, sex):
     3         self.sex = sex
     4 
     5     def Fun(self):
     6         print(hasattr(foo, 'sex'))
     7         return self.sex
     8 
     9 
    10 foo = Foo('man')
    11 print(foo.Fun())

    1.创建了Foo类之后,首先会运行到 :__init__这个方法

     进入之后python会判断,Foo类进行实例化之前需要先准备什么(上面代码示例看到是准备要实例化一个性别sex属性)

     因为没有实例化,因此便不会运行 self.sex = sex 去和Foo类进行属性绑定,继续走下一步的代码,发现了还需要准备方法 def Fun(self):

    2.当知道有哪些方法后,也就是所有准备工作都完成后

     python会跳出Foo类,然后一步一步往下走,直到找到对它进行实例化的代码:foo = Foo('man')

     这个时候会进入 __init__中,将准备好的sex属性和 man 值匹配对应

     最后 self.sex = sex 这步将会把 sex = ‘man’ 和Foo类进行绑定,从而Foo类便正式有了sex这个对象

    3.实例化完成后,Foo并不会走接下来Fun方法,而是会跳出该类,走 print(foo.Fun()) 代码

     这里就能显示我们自定义的类方法和python函数基本是同一个概念(唯一的区别就是方法有self,可以拥有和类相关的功能),都是需要调用才会进入

     调用Fun方法后,会读取方法代码,hasattr(foo, 'sex')  判断foo有没有 'sex' 对应的对象,有返回True,否则返回False

     最后因为1,2步已经绑定好了,因此 return self.sex 的值为man

    本文来自博客园,作者:SlookUP,转载请注明原文链接:https://www.cnblogs.com/SlookUp/p/15097671.html

  • 相关阅读:
    架构设计的方法学 【转】
    异常处理
    Java中---HashSet中的Set()方法不能加重复值的原因,唯一性
    java中Set集合
    java中foreach语法和总结
    泛型的处理
    迭代器错误处理
    防重复提交
    mqtt安装和使用
    字符串正则替换
  • 原文地址:https://www.cnblogs.com/SlookUp/p/15097671.html
Copyright © 2011-2022 走看看