Python如何将表达式分配给对象属性?

时间:2016-06-07 10:43:28

标签: php python oop

我已经使用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执行此操作。

2 个答案:

答案 0 :(得分:2)

Python中的

在类定义

中声明的变量
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”语句。