Python面向对象基础(二)
2021/9/23 17:12:20
本文主要是介绍Python面向对象基础(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录(PS:觉得不错请点赞收藏支持一下)
- 一、继承
- 1.1 概念
- 1.2 单继承
- 1.3 多层继承
- 1.4 多继承
- 二、子类与父类的方法
- 2.1 子类调用父类指定方法
- 三、私有成员
- 3.1 定义
- 3.2 获取和修改私有属性
- 总结
一、继承
1.1 概念
1. 官方语言
继承:子类继承父类的属性和方法
2. 生活举例
生活中的继承,有很多种,比如:子女继承父辈的财产,徒弟继承师父的传统手艺…
3. 语法格式
# 父类 A class A(): pass # 子类 B class B(A): pass
在 Python 中,所有类默认继承 object 类, 它是顶级类或基类,其他子类叫做派生类。
1.2 单继承
class A(): def __init__(self): self.name = 'hello' def f1(self): print('父类的 f1 方法') class B(A): pass # 创建对象 b1 = B() # 访问实例属性 print(b1.name) # hello # 调用实例方法 b1.f1() # 父类的 f1 方法
1.3 多层继承
字面意思,一层一层的继承,实践一下就懂了
class A(): def f1(self): print('f1') class B(A): def f2(self): print('f2') class C(B): pass # 创建对象 c1 = C() c1.f1() # f1 c1.f2() # f2
1.4 多继承
解释说明:意思是一个类同时继承了多个父类。
""" 多继承: 是 python 独有的一种机制 因为 python 中没有接口概念,所以使用多继承实现接口 如果多个父类中存在同名方法,子类按顺序优先调用第一个父类的方法 """ class A(): def f2(self): print('A 的 f2 方法') class B(): def f2(self): print('B 的 f2 方法') class C(A,B): def f1(self): print('C 的 f1 方法') # 创建对象 c1 = C() c1.f1() # C 的 f1 方法 c1.f2() # A 的 f2 方法
二、子类与父类的方法
2.1 子类调用父类指定方法
- 通过 父类名称.方法名称(self) 调用
class A(): def f1(self): print('父类的 f1 方法') class B(A): def f2(self): # 调用父类中的 f1 方法 A.f1(self) # 创建对象 b1 = B() b1.f2() # 父类的 f1 方法
- 通过 supper().方法名称() 调用
class A(): def f1(self): print('父类的 f1 方法') class B(A): def f2(self): # 调用父类中的 f1 方法 super().f1() # 创建对象 b1 = B() b1.f2() # 父类的 f1 方法
3. 如果子类定义了与父类同名的属性和方法,子类默认获取自己的属性和方法。
class A(): def __init__(self): self.name = '父类A' def f1(self): print('父类的 f1 方法') class B(A): def __init__(self): self.name = '子类B' def f1(self): print('子类的 f1 方法') # 创建对象 b1 = B() # 访问实例属性 print(b1.name) # 子类B # 调用实例方法 b1.f1() # 子类的 f1 方法
4. 如果子类定义了与父类同名的属性和方法,子类还是想获取父类的属性和方法,该怎么办呢?
请细品 class A(): def __init__(self): self.name = '父类A' def f1(self): print(self.name) class B(A): def __init__(self): self.name = '子类B' def f1(self): print(self.name) def f2(self): A.__init__(self) A.f1(self) b1 = B() b1.f2() # 父类A print(b1.name) # 父类A
三、私有成员
如果这个属性和方法不需要外部访问,那就设置成私有的。
3.1 定义
设置私有权限的方法:在属性名和方法名 前面 加上两个下划线 __。
1. 语法格式
class 类名(): # 私有属性 __属性名 = 值 # 私有方法 def __函数名(self): 代码
2. 举例
# 私有属性和私有方法只能在类里面访问和修改。 class A(): def __init__(self): self.__name = '张三' # 将 name 属性设置为私有,在类的外部无法访问 def __f1(self): print('f1') a1 = A() print(a1.name) # 报错 a1.__f1() # 报错
3.2 获取和修改私有属性
在Python中,一般定义函数名 get_xx 用来获取私有属性,定义 set_xx 用来修改私有属性值。
class A(): def __init__(self): self.__name = '张三' # 将 name 属性设置为私有,在类的外部无法访问 def f2(self): print(self.__name) def get_name(self): return self.__name def set_name(self,value): self.__name = value a1 = A() # 通过公有方法和属性来操作类中的私有成员 # 获取 a1.f2() # 张三 # 修改 a1.set_name('老王') print(a1.get_name()) # 老王
总结
一起进步吧
这篇关于Python面向对象基础(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南