调用实例的瞬间就已经将实例固定下来了,后续重新class也不会改变实例
Topic sourcelisa = Student('Lisa',99)
这行代码在运行的时候创建了一个实例,
后面的代码重新定义Studengt类的时候,lisa实例并没有被改变
所以lisa和你后面的代码没有任何 关系
以你的源码为标准,在你创建实例 例如lisa = Student('Lisa',99),输出lisa.print_score()的格式取决于你最近一次创建的 类的方法;或者说你最后再创建一个实例,那么它的输出格式一定套用的是下面那个模板,很容易验证,大家不妨多试几次
我觉得按变量绑定对象的知识来理解可能比较好
按python万物皆对象的特点,Class也是个对象,你第一个lisa实例不是Student这个Class name的实例,而是Student这个Class name所指向的Class object的实例(这里记为Class object1)
而第二次定义Student类,并不是修改了Class object1,而是创建了新的Class object2,并把Class name重新指向了Class object2。所以bart严格来说同样也不是Student的实例,而是它指向的Class object2的实例。
这时Class object1还在不?在啊,只是没法用Student访问了而已!所以lisa至始至终都是Class object1的实例。其实逻辑就和a = 1;b = a;a = 2是一样的,你说b等于1还是2?
- 1
忆往昔念往昔往昔不复悔不当初
尝试下来,发现一个问题调用实例的瞬间相当于把程序固定了,后续重新定义class不会影响重新定义的程序,通过print 可以对比得到不同的物理地址
比如,