面向对象
对象
- 设计一个类
1 | class student: |
- 创建一个对象
1 | stu1 = student() |
- 对对象进行赋值
1 | stu1.name = "日奈" |
- 类里面也可以添加函数
class xxx:
def xxxx(self): //self必须存在用来表示类对象自身的意思
xxx //不过在传入参数时不用理它
如果有成员变量要传入到成员方法,要加self.
1 | class student: |
- 成员方法也可以继续添加元素
1 | class student: |
构造方法
因为一个个定义变量太麻烦,所以可以在函数中添加构造方法解决
1 | class student: |
因为构造方法里已经有属性了,所以name之类的可以不写了,直接写构造方法
1 | class student: |
魔术方法
魔术方法也就是python的内置方法,__ init __就是其中一种
__ str __
当类对象需要转为字符串时,用print(str(xxx))的话,结果会输出内存地址,但我们并不需要这个,所以要用魔术方法
1 | class student: |
print之后会按照__ str __的格式输出
__ lt __
可同时完成<
,>
的比较
1 | class student: |
__ le __
可同时完成<=
,>=
的比较
逻辑跟lt一样
__ eq __
可用于==
的判断
封装
私有成员
私有成员变量和方法只要在前面加上__
即可
例子:
1 | class phone: |
继承
单继承
格式:
class 类名(父类名):
类内容体
多继承
格式:
class 类名(父类名1,父类名2,…):
类内容体
如果继承后也不想在添加什么,那么可以写上pass来替代,保证语法不报错
复写
跟java的重写一样,继承之后def重写即可
变量和方法都能复写
调用父类同名成员
如果想调用被复写的父类的原有形式,有两种方法
父类名.成员变量
父类名.成员方法(self)
super().成员变量
super().成员方法()
类型注解
可以在写代码时理解某个变量的类型
格式:
变量名: 类型
如: name: str = “xxx”
stu: Student = Student()
多态
1 | class Animal: |
其中speak方法也叫做抽象类
或接口
,带有pass,子类必须重写接口才能使用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 西东温的小世界!