Python Class属性与PHP静态类属性有何不同?

时间:2015-10-28 19:24:29

标签: php python static attributes

表面上的Python类属性和PHP静态类属性看起来功能相同(不包括PHP中添加公开/保护/私有可见性的能力)。

使用静态或属性:

  • 与班级绑定而不是实例
  • 必须在运行时进行评估
  • 如果您依赖于类方法定义中的任何一个,那么您将难以实现对该方法测试的完全覆盖。

我的问题是我是否有任何重大差异。

1 个答案:

答案 0 :(得分:1)

当查找python实例以查找与类变量同名的属性时,它将提供类变量。

在PHP中......

class C 
{
    static $foo = 42;
}

$i = new C();
var_dump($i->foo);  // null, plus a notice

在Python中......

class C:
    foo = 42

i = C()
print(i.foo)  # 42

更有趣......

class C:
    foo = []

a = C()
b = C()
c = C()

a.foo = ['hello']
b.foo.append('world')

print(C.foo) # ['world']

print(a.foo) # ['hello']
print(b.foo) # ['world']
print(c.foo) # ['world']

换句话说,要非常小心Python中的类变量。