Python3基础笔记---面向对象
2024-10-01 12:38:05
只是对一些新的知识的记录
1、创建类
class ClassName:
<statement-1>
.
.
.
<statement-N>
类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。 __init__() 方法可以有参数
2、方法 (类中叫方法,单独写交函数)
定义一个名为 __init__() 的特殊方法(构造方法)
def __init__(self):
self.data = []
类定义了 __init__() 方法的话,类的实例化操作会自动调用 __init__() 方法。
self代表类的实例,而非类。self 永远是执行该方法的调用者
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
3、继承
class DerivedClassName(BaseClassName1):
<statement-1>
.
.
.
<statement-N>
需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类中是否包含方法。
BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:
class DerivedClassName(modname.BaseClassName):
当子类对象调用方法时,若子类中有,直接调用,比如f2()会使用子类中重写的方法,但当子类中没有时,就会去父类中寻找。
class Base:
def a(self):
print('Base.a') class F(Base):
def a1(self):
print('F.a') class S(F):
def b(self):
print('S.b') obj = S()
obj.b()
obj.a()
Python支持多继承
class DerivedClassName(Base1, Base2, Base3):
<statement-1>
.
.
.
<statement-N>
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
需要注意如果他们有共同的基类,如果搜索到了L1中还没有这个方法,并不会去搜索Base,而是去搜索R1,R2,最后去搜索Base
4、方法重写
#!/usr/bin/python3 class Parent: # 定义父类
def myMethod(self):
print ('调用父类方法') class Child(Parent): # 定义子类
def myMethod(self):
print ('调用子类方法') c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法
调用父类方法的两种方式: super(类名 ,self).父类的方法(...) or 父类名.父类中的方法(self, ...)
最新文章
- java多线程系类:JUC线程池:05之线程池原理(四)(转)
- Python中的file和open简述
- Oracle数据库,内置函数小结
- Python 与 C# lambda表达式比较
- TCP/IP, HTTP, socket
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)
- 从cellForRowAtIndexPath 看cell的重用机制
- Linux学习——粘粘今天看的东西
- PHP字符串的编码问题(转)
- 找不到eth0,但能找到eth1的问题解决办法
- SQL学习之高级联结(自联结、自然联结、外联接)
- html to pdf
- [BZOJ]1018 堵塞的交通(SHOI2008)
- SQL Server 优化
- [转]Deciding on a Project Coding Mask
- 044 SimpleDateFormat的线程安全问题与解决方案
- 案例学python——案例三:豆瓣电影信息入库
- Ubuntu下U盘变成只读的解决方法
- ftp主动模式与被动模式交互过程分析
- xcrun: error: invalid active developer path
热门文章
- Android7.0打开sdacrd图片问题
- SQL SERVER中的sys.objects和sysobjects的区别
- solarwinds之监控路由器
- The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online J Press the Button
- iOS性能优化未阅文章归档
- ZBrush中SnakeHook蛇钩笔刷介绍
- Aspose.Cells基础使用方法整理
- VMware虚拟机共享文件夹
- easyui的增删改
- jquery.nicescroll.min.js滚动条插件的用法