0

我刚刚观察到与 C++ 相比,python 中的类有何不同。就像,在 C++ 中

Class test

{


    int  a,b;

    Void  func()

    {

    }  

}

在上面的类模板中,a 和 b 只是在模板中定义的 Object 变量。

然而,在 python 中,您无法指定类在类定义中可以具有的对象变量和所有对象变量。

喜欢,

Class student(self):

    def func(self,x)
        pass

在上面的类模板中,我们不能定义任何对象变量。dir (student) 只会给出函数和类变量的列表。

假设如果要实例化这个类的一个对象,Say,S。如果我想给那个学生起个名字,那么 S.name = “” 就可以了

现在 dir(S) 将显示 name 属性,而 dir(student) 将没有 name 字段对我来说听起来有点奇怪。

python 的解释功能允许向对象添加任意数量的字段。

我的问题是

  1. 为什么他们没有提供在类定义中定义变量的功能?, 和

  2. 在实例化过程中如何保留内存并在将新变量添加到对象时对其进行修改?

谢谢,

-卡利斯

4

1 回答 1

2
  1. Python 强调动态类型,因此您可以随时添加变量。您可以在__init__构造函数中添加任何您想要的变量。您可能还需要类变量。如果你真的想要,你可以重写这个__setattr__方法来阻止人们添加新的属性。您也可以使用__slots__,但不应该使用。

  2. 如果您不使用__slots__,则属性将存储在__dict__字典中。所以类实例本身只占用字典指针的空间(加上其他一些小东西)。

于 2013-07-24T04:46:58.693 回答