代码之家  ›  专栏  ›  技术社区  ›  Falmarri

静态类成员python

  •  12
  • Falmarri  · 技术社区  · 14 年前

    所以我使用静态类成员,这样我就可以在类方法和同一类的静态方法之间共享数据(只有一个类的实例化)。我很理解这一点,但我只是想知道静态成员何时被初始化?是进口货吗?第一次上课的时候?因为我将从多个模块(因此多个import语句)调用此类的静态成员。访问静态方法的所有模块是否共享相同的静态数据成员?如果我的主客户机删除了类的实例,然后重新创建它(不完全终止或重新导入内容),我的数据成员会被保留吗?

    1 回复  |  直到 14 年前
        1
  •  14
  •   Kenan Banks    12 年前

    它们将在类定义时初始化,如果您将类作为模块的一部分导入,则会在导入时初始化。假设“静态”类成员定义样式如下:

    class Foo:
        bar = 1
    
    print Foo.bar # prints '1'
    

    注意,这是一个静态类成员,不需要实例化该类。

    import语句将只执行一次模块的内容,无论执行多少次或在何处执行。

    是的,静态成员将由访问它们的任何代码共享。

    # Create static member
    class Foo:
        bar = 1
    
    # Create and destroy object of type Foo
    foo = Foo()
    del foo
    
    # Check that static members survive
    print Foo.bar # Still prints '1'