python类定义Vs C ++类定义

时间:2013-07-24 04:35:49

标签: c++ python class definition

我刚刚观察到与C ++相比,python中的类是如何不同的。 喜欢, 在C ++中

Class test

{


    int  a,b;

    Void  func()

    {

    }  

}

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

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

像,

Class student(self):

    def func(self,x)
        pass

在上面的类模板中,我们无法定义任何Object变量。 dir(student)将仅提供函数和类变量列表。

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

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

python的解释功能允许我们想要添加任意数量的字段。

来找我的问题是

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

  2. 如何在实例化期间保留存储器,并在将新变量添加到对象时进行修改?

  3. 谢谢,

    -kallis

1 个答案:

答案 0 :(得分:2)

  1. Python强调动态类型,因此您可以随时添加变量。您可以在__init__构造函数中添加要包含的任何变量。您可能还需要class variables。如果确实想要,您可以覆盖the __setattr__ method以阻止人们添加新属性。您也可以使用__slots__,但you shouldn't

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