为了账号安全,请及时绑定邮箱和手机立即绑定

如果子类的__slots__直接在父类基础上增加score属性,输出也正确,有无区别?


class Person(object):

    __slots__ = ('name', 'gender')

    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

class Student(Person):

    __slots__ = ('name', 'gender', 'score')

    def __init__(self, name, gender, score):
      
        self.score = score
       
s = Student('Bob', 'male', 59)
s.name = 'Tim'
s.score = 99
print(s, s.score, s.name)

 

正在回答

5 回答

我觉得子类的__slot__和父类的__slot__是两个不同的属性。分别存放单独的元组。 在系统搜索的时候先在自身的__slot__里面的元组进行搜索,找不到的再到父类里面搜索,所以子类里面放不放父类的属性没有多大关系,损失点性能而已,忽略不计。

0 回复 有任何疑惑可以回复我~

居然这样也可以运行,照理来说 你要继承也要super(Student,self).__init__(name,gender) 应该也要继承父类先初始化吧。。。

0 回复 有任何疑惑可以回复我~

没有初始化,那么子类的属性就会被父类原有属性覆盖。

0 回复 有任何疑惑可以回复我~

我想这大概是一种覆盖


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255739    人
  • 解答问题       2946    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

如果子类的__slots__直接在父类基础上增加score属性,输出也正确,有无区别?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信