这能打印出来是什么原理?
来源:3-3 类的高级特性之slots
江民川
2020-05-07 09:34:38
这个示例是什么意思啊?感觉老师在把我们当做懂很多的老手在讲解,完全莫名其妙。
一、难道以后实际运用的时候给实例添加新的方法,也是在代码里写的吗?这个在上面def eat()完全没搞懂是啥意思?
二、这个cat_black.eat=eat又是什么意思,上面的eat()也没有property,那cat_black.eat=eat里的eat又是什么eat?eat也不是参数啊,不能在__main__里直接cat_black.eat()吗?
3回答
同学,你好。
1、不用__slot__可以给当前类动态绑定任意属性和方法
2、def eat()是普通的函数 ,cat_black.eat = eat是动态添加eat方法,等号右边的eat表示eat函数的引用,因此不需要添加括号。cat_black.eat()表示通过对象调用eat()方法
3、在添加实例方法时,可以直接写在类中,也可以使用视频中的方法动态添加实例方法
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
江民川
提问者
2020-05-07
我试了一下,上面的def eat()是在定义class cat之外的函数,然后被cat.eat=eat这句调用进cat这个类里去,cat.eat=eat还真不能省掉,上面的def eat()也没有@property,那为什么cat.eat=eat的两个eat可以都不用加括号?
江民川
提问者
2020-05-07
意思是,如果不用__slot__,在运行的时候对象能被新的“对象名.新属性名=某值”语句无条件添加新属性吗?
相似问题