Python中的类和函数

时间:2013-05-02 14:12:47

标签: python

在类和函数上编写一些代码时,我采用了函数和具有相同名称的类的情况

代码执行为:

$python test.py

为此,我尝试了两种方案:

  1. 我首先在一个文件test.py中编写它们并得到该函数被调用而不是类

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

    输出:

    7
    
  2. 我在一个文件test.py和另一个文件中的同名类中编写了函数并导入了它。当我没有编写__init__函数时,函数以及类都是执行了,而当我编写__init__函数时,只执行了函数

    • 没有__init__功能

      1. hello.py:

        class DEF:
            a=2136
            print a
        
      2. test.py:

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

        2136                                                       
        7
        
      4. 定义了__init__函数

        1. hello.py:

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

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

          7
          

2 个答案:

答案 0 :(得分:6)

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

class DEF:
    a=2136
    print a

Python必须创建一个名为DEF的类定义,为此,它执行类的主体,就像它是一个函数一样。然后,该函数的本地名称将形成类主体。

无论您使用其他功能替换名称,都会发生这种情况。它也只运行一次;如果在未再次执行顶级代码之前导入了模块。

答案 1 :(得分:0)

如果您的问题恰好是执行print a的原因,那么python是一种解析语言,这意味着执行了类定义代码,因此在编写时会调用任何函数。当您调用print a但实际上解释器首先解析脚本时,不会调用DEF()