__slots__为什么没有报错,依然赋值了没有的age

来源:4-5 Python类的__slots__方法

qirenhou

2022-04-26 22:28

class Person:

    __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):

        super().__init__(name, gender)

        self.score = score


Student.age = 12

s = Student('qrh','男',88)


print(s.name,s.gender,s.score,s.age) #》》qrh 男 88 12


写回答 关注

2回答

  • 土斤土斤
    2023-01-13 17:09:38

    __slots__ 只能限制为实例对象动态添加属性和方法,而无法限制动态地为类添加属性和方法。因为你是直接往类里面添加属性和方法,所以实例s能访问到age这个Student类的属性

  • qirenhou
    2022-04-26 22:32:00

    http://img4.mukewang.com/626802010001c5a613570618.jpg

    我已经晕掉了,为什么还是执行成功了呢,age的值,也打印出来了:12

    dotasf...

    你这个图实在不清晰。另外,我也跟你发生了同样的问题,在定义person类时,这么写:Person(object) 就没有问题了,只能说这是版本的问题吧。我在自己电脑上3.7中不写也行

    2022-07-04 22:13:18

    共 2 条回复 >

Python3 进阶教程(新版)

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

41910 学习 · 236 问题

查看课程

相似问题