面向对象的基本特征:继承、封装、多态i
封装:
交互性提示符之下,输入print(实例名),如果不设置__str__函数则默认执行__repr__
str()和repr()都可以将python中的对象转换为字符串
两者之间的目标不同:
str()主要面向用户,其目的是可读性,返回形式为用户友好性和可读性都较强的字符串类型;
repr()面向的是python解释器,或者说开发人员,其目的是准确性,其返回值表示python解释器内部的含义,常作为编程人员debug用途。
对类的操作:类中定义了变量,这个变量属于类,而不是实例,但这个变量可以被实例调用:
写作 实例.count或类.count都能打出count值
但是,全局变量在被实例调用后随意更改,则实例对应的变量就变成了局部变量。如下,全局count不改变,但是book2.count至此和全局不一样了
对类的变量进行操作
删除实例:设置删除函数,主要是改变类的变量
操作结果是,删除一本书,类的计数减1
二、类自己的函数(全局,和实例无关)
cls_method用到的少,static_method()实例不能调用,加上@staticmethod可以通过实例去调用,不建议加
类中自定义函数:
比如根据已有属性,返回年龄
定义的函数调用需要写括号:
s.get_age()
类中有表示属性的函数用法:
这个和自定义的功能一致(函数内容要自己写),@property表示属性,叫装饰器,但是调用时,不加括号
s.age即可
多重属性函数
任务31:
回顾:利用函数计算和利用属性计算(像字段)
调用函数表示对象行为
利用属性则仍是对象属性性质的显示
函数计算(计算圆面积)
ps:单行注释 shift+#
多行注释 ctrl+/
属性:调用属性不加括号
对象的继承和包含:
1。继承–基类的子类(子类继承于类):
比如员工(基类)-程序员(子类)
2。多态:比如函数重定义—基类中已定义的函数在子类中重新定义
继承:
super().函数 表示基类或超类
写子类初始化除了使用super()之外,还可以使用基类名称:
多态:属于同一类型的不同实例,对同一消息进行不同的响应能力