【问题标题】:python class definition Vs C++ class definition [closed]python类定义与C++类定义[关闭]
【发布时间】:2013-07-24 04:35:49
【问题描述】:

我刚刚观察到与 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. 如何在实例化过程中保留内存并在向对象添加新变量时修改内存?

谢谢,

-卡利斯

【问题讨论】:

  • 到底是什么问题?
  • 帖子中完全没有“模板”。

标签: c++ python class definition


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多