Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的类和函数_Python - Fatal编程技术网

Python中的类和函数

Python中的类和函数,python,Python,在编写一些关于类和函数的代码时,我以一个函数和一个同名的类为例 代码执行为: $python test.py 为此,我尝试了两种方案: 我首先在一个文件test.py中编写了它们,得到的结果是调用函数而不是类 class ABC: def __init__(self): a=3 print a def ABC(): b=7 print b if __name__=='__main__': ABC() 输出: 7 2136

在编写一些关于类和函数的代码时,我以一个函数和一个同名的类为例

代码执行为:

$python test.py
为此,我尝试了两种方案:

  • 我首先在一个文件test.py中编写了它们,得到的结果是调用函数而不是类

    class ABC:
        def __init__(self):
            a=3
            print a
    
    def ABC():
        b=7
        print b
    
    if __name__=='__main__':
        ABC()
    
    输出:

    7
    
    2136                                                       
    7
    
    7
    
  • 我在一个文件test.py中编写了函数,并在另一个文件中导入了同名的类。当我没有编写
    \uuuu init\uuu
    函数时,函数和类都被执行了,而当我编写
    \uu init\uu
    函数时,只有函数被执行了

    • 没有
      \uuuu初始化\uuuuu
      功能

    • hello.py:

      class DEF:
          a=2136
          print a
      
      class DEF:
          def __init__(self):
          a=2136
          print a
      
    • test.py:

      from hello import DEF
      
          def DEF():
              b=7
              print b
      
      if __name__=='__main__':
          DEF()
      
    • 输出:

      7
      
      2136                                                       
      7
      
      7
      
    • 定义了
      \uuuu init\uuuu
      函数

    • hello.py:

      class DEF:
          a=2136
          print a
      
      class DEF:
          def __init__(self):
          a=2136
          print a
      
    • test.py

      from hello import DEF 
      def DEF():
          b=7
          print b
      if __name__=='main':
          DEF()
      
    • 输出:

      7
      
      2136                                                       
      7
      
      7
      

  • 类的主体在定义类时执行。因此,当python加载文件时,以下内容始终打印
    2136

    class DEF:
        a=2136
        print a
    
    Python必须创建一个名为
    DEF
    的类定义,要做到这一点,它会像执行函数一样执行类的主体。然后,该函数中的本地名称构成类主体


    无论您如何使用另一个函数替换名称,都会发生这种情况。它也只运行一次;如果在顶级代码不再执行之前导入了模块。

    在定义类时执行类的主体。因此,当python加载文件时,以下内容始终打印
    2136

    class DEF:
        a=2136
        print a
    
    Python必须创建一个名为
    DEF
    的类定义,要做到这一点,它会像执行函数一样执行类的主体。然后,该函数中的本地名称构成类主体


    无论您如何使用另一个函数替换名称,都会发生这种情况。它也只运行一次;如果在顶级代码不再执行之前导入了模块。

    如果您的问题恰好是为什么执行
    print a
    ,python是一种解析语言,这意味着执行类定义代码,因此在那里编写任何函数时都会调用<当您调用
    DEF()
    时,不会调用code>print a,而是在解释器第一次解析脚本时调用。

    如果您的问题恰好是为什么执行
    print a
    ,python是一种解析语言,这意味着执行类定义代码,因此在那里编写任何函数时都会调用<当您调用
    DEF()
    时,不会调用code>print a,而是在解释器第一次解析脚本时调用。

    因为我读了您的“问题”,但我不仅无法识别您的疑问,甚至看不到一个“?@Meoiswa问题是“为什么?”,如“为什么会发生这种情况?”,而不是“为什么问问题是什么?”(我猜:)啊,我明白了,我太傻了。是的,Martijn Pieters很优雅地回答了你的问题。因为我读了你的“问题”,但我不仅看不出你的怀疑,甚至连一个都看不见?“@Meoiswa问题是“为什么?”比如“为什么会发生这种事?”,而不是“你为什么问这个问题?”(我猜:))啊,我明白了,我太傻了。是的,Martijn Pieters优雅地回答了您的问题。您可以通过在类定义中添加
    return
    调用来测试这一点。您的代码将停止执行,因为它在解析
    DEF
    definition时执行
    return
    。您可以通过在类定义中添加
    return
    调用来测试这一点。您的代码将停止执行,因为它在解析
    DEF
    deffinitionThank Martjin,这很有用..谢谢Martjin,这很有用。。