为了方便举例 设有一个类 Student 类属性count 类方法 showcount 两个实例对象 a b 实例属性 age 实例方法show()
1.模板是类对象,实例对象根据类对象创建
2.实例对象可访问范围包括 实例属性 实例方法 类属性 类方法 静态方法 这些都可以访问
关于实例对象引用 实例属性 实例方法 规律总结下
每个实例对象在内存都是独立的即地址引用也不同,但是实例属性的引用规律如下,如果 a.age=10 b.age=10 则 id(a.age)==id(b.age) 说白了age实际就是变量,那么 a.age=10 b.age=15 id(a.age)!=id(b.age)
在内存里实例属性属于实例对象空间,实例方法在实例对象控件只是个引用,具体的方法内容存在于类对象空间
3.实例对象调用类属性 类方法, a.count=10 注意虽然count属于类属性但是实例对象可以调用,此时a.count 的 count属性值只属于a对象,并不影响Student.count,使用 a.showcount() 输出的并不是a.count 而是 Student.count 那么 a.count怎么用呢? 可以直接print(a.count) 由于在实例方法里不能用类属性,所以a.count虽然能用但是实际意义?????mmp不知道
4.类对象调用 实例属性 实例方法, Studtnt.age=10 可以使用,但实际上由于Student本身就是一个对象所以Student.age 实际是给Student这个对象本身赋值和实例对象没有任何关系只是Student自己的age属性,当Student.show()时由于必须传入一个self那么不传参时会报错,传参时使用的age实际上是传入的实例对象的age所以 Student.age意义和在!!!!!!!
5. 类对象调用 类属性 类方法 ,和实例对象使用 实例属性 实例方法的规律没啥区别
6. 静态方法 类方法使用实例属性 ,可行但是需要传参,传递一个具体的对象
7.关于静态方法 目前来看和 类方法除了调用属性需要Student.count 外没有任何区别
由以上测试推测,在实例对象空间里,类属性 类方法应该也存在只是有限制
同理类对象空间里,实例属性 实例方法也存在只是有限制