多重继承的时候如果两个父类的__slots__定义的不同会出错怎么办
Topic sourceclass Person(object):
__slots__ = ('__name','__sexy','__studentnum')
def __init__(self,name,sexy):
self.__name = name
self.__sexy = sexy
def getname(self):
print("This person's name is:%s." % self.__name)
def getsexy(self):
print("This person is a %s." % self.__sexy)
def setname(self,newname):
self.__name = newname
print("This person's new name is:%s." % self.__name)
class Student(object):
__slots__ = ('__name','__studentnum','__sexy')
def __init__(self,name,studentnum):
self.__name = name
self.__studentnum = studentnum
def getname(self):
print("This student's name is:%s." % self.__name)
def getstudentnum(self):
print("This student's number is:%s." % self.__studentnum)
class Person_Student(Person,Student):
pass
当两个父类的slots完全相同的时候还是会出现冲突报错,这是为什么呢,求大神指点。在多重继承的时候不能再父类使用slots吗
使用slots要注意,slots定义的属性仅对当前类实例起作用,对继承的子类是不起作用的,如果子类中也定义slots,这样,子类实例允许定义的属性就是自身的slots加上父类的slots,如果子类中没有定义slots,父类的slots不会对子类造成影响,我测试了一下,没有错误
评论里有个回复我觉得比较有价值,slots使用目的是为了减少内存使用而限制绑定属性,针对只需要几个绑定属性而又有大量实例的类。
另外, 思考,解决问题的时候,要走出来看看,这个问题真的值得花时间去探讨吗?
这也是初学者很容易走进的误区。
- 1
笨笨的大桉树
如题,我发现当多重继承的时候,两个父类定义的slots不同会发生错误,但是如果一个父类没有定义slots则不会发生错误,而且在这种情况下似乎slots没有起到限定作用