我刚刚观察到与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的解释功能允许我们想要添加任意数量的字段。
来找我的问题是为什么他们没有提供在类定义中定义变量的功能? ,和
如何在实例化期间保留存储器,并在将新变量添加到对象时进行修改?
谢谢,
-kallis
答案 0 :(得分:2)
Python强调动态类型,因此您可以随时添加变量。您可以在__init__
构造函数中添加要包含的任何变量。您可能还需要class variables。如果确实想要,您可以覆盖the __setattr__
method以阻止人们添加新属性。您也可以使用__slots__
,但you shouldn't。
如果您不使用__slots__
,则属性存储在__dict__
字典中。所以类实例本身只占用字典指针的空间(加上一些其他小东西)。