我已经使用PHP一段时间了,刚开始使用Python。 Python中有一个我在学习时遇到的功能。
在Python中
class A:
#some class Properties
class B:
a = A() # assiging an expression to the class Property is possible with python.
在PHP中
class A{
}
class B{
$a = new A(); // PHP does not allow me to do this.
// I need to do this instead.
function __construct(){
$this->a = new A();
}
}
我想知道原因。 python如何以不同的方式符合代码,如果有任何方法可以用PHP执行此操作。
答案 0 :(得分:2)
在类定义
中声明的变量class A:
#some class Properties
class B:
a = A() # assigning to the class Property
# class properties are shared across all instances of class B
# this is a static property
在类构造函数
中声明的变量class A:
#some class Properties
class B:
def __init__(self):
self.a = A() # assigning to the object Property
# this property is private to this object
# this is a instance property
更多阅读python static and object attributes
PHP中的
inPHP,singleton pattern使用静态变量的概念在对象之间共享实例。
希望这能澄清类属性和对象属性。
答案 1 :(得分:0)
我相信这是语言特有的。来自docs
class ClassName: <statement-1> . . . <statement-N>
类定义,如函数定义(def语句)必须在它们产生任何影响之前执行。 (您 可以想象,将一个类定义放在if的一个分支中 声明,或在函数内部。)
如您所见,这些表达式已经过评估,您甚至可以使用“if”语句。