十三:
1.
类:
封装后:
注:能够访问,不过不建议访问,全靠自觉。
2.
例:
结构:
创建对象:
并且调用父类的info()方法;子类可以继承。
多重继承:
3.
注:子类想输出自己独有的东西,父类不能够提供这个需求了。就需要子类自己去重写;
例:
重写Person类里面的方法;
这个方法被student类重写过;
因为关于,name和age在父类的info()函数里面已经输出了,无需在输出了,只需要直接调用就可以了;
同理:关于teacher子类也可以输出教龄;
4.
用dir查看stu这个对象所具有的属性和方法;
这些其实都是从object父类里面继承过来的;
返回的是一个对象的描述:
在输出stu的时候,输出的是对象内存的地址:
重写方法,输出属性值即可:
不会再输出对象的内存的地址了。因为重写了str(),再次调用重写过的方法(函数),输出内容
直接输出stu的时候,默认调用str()这样的方法。
5.
例:
传给fun函数任意一个对象;
其实这三个是有继承关系的,并且重写了eat方法,所以会调用重写后的内容。
虽然Person和其他的没有继承关系,不过他有eat方法,所以依然可以调用eat方法。
区分静态语言和动态语言:
6.
类对象,就会看到属性和方法的字典:
特殊方法:
两个结果相同;
两个对象实现了加法;
上面这两个也是一样的;
特殊方法和内置函数是一样的。
所以,想要输出对象的长度就要编写len()方法。
例:
创建对象与初始化对象:
根据答案推理出:
new创建的对象–就是self,以及其对象p1.
他们之间是怎么执行的呢?
主要讲的是new和init,
new在前创建对象而init在后是对这个对象的属性,实例属性进行赋值,最后将创建的对象放在p1中。
7、
例:
内存示意图:
浅拷贝:
注:浅拷贝只是将Computer这个实例对象拷贝一份
深拷贝:
注:深拷贝除了将实例对象拷贝一份,也会将实例对象的子对象拷贝出来。