Python学习笔记-17.09.20
来源:互联网 发布:淘宝代运营 编辑:程序博客网 时间:2024/05/21 13:23
Python 面向对象编程
继承:是为了重用父类的代码
多继承:默认自雷不会调用父类构造,除非调用
多态:方法重写:从左往右,从下往上找重写的方法
class A: def __init__(self): print("A 的构造方法")class A1: def __init__(self): print("A1 的构造方法")class B(A,A1): def __init__(self): A.__init__(self) A1.__init__(self) print("B 的构造方法")class B1: def __init__(self): print("B1 的构造方法") def foo(self): print("B1.foo")class C(B,B1): def __init__(self): B.__init__(self) B1.__init__(self) # super(B1,self).__init__() #从左的第一个 print("C 的构造方法") def foo(self):#方法重写 print("C.foo")c = C()c.foo()
class 类名(*类名)说明Python支持多继承。
上面这段代码的运行结果:
A 的构造方法
A1 的构造方法
B 的构造方法
B1 的构造方法
C 的构造方法
C.foo
上面的5个类中,B继承了A和A1,而C继承了B和B1
首先可以看到
class B(A,A1): def __init__(self): A.__init__(self) A1.__init__(self) print("B 的构造方法")
这段代码中,B的构造方法中调用了A和A1的构造方法,输出结果是:
A 的构造方法
A1 的构造方法
B 的构造方法
而如果不调用两个父类的构造方法的话,就只会输出LB 的构造方法 :
B 的构造方法
这说明了,在Python中,子类是不会自己调用父类的构造方法的,所以当需要父类构造方法时要手动调用一下。
同时Python不支持构造方法的重载。
多态
class person: def __init__(self,name=None,age=None): self.name=name self.age=age def __str__(self): return "我是{0},今年{1}岁".format(self.name,self.age) #Python 中操作符可以重写(加减乘除等比较) def __add__(self, other): return person(self.name+other.name,self.age+other.age) def __lt__(self, other): if self.name == other.name : return other.age < self.age else: return self.name < other.namep = person(name="zs",age=19)p1= person(name="zs",age=19)print(p+p1)#排序ps=[person("zhangsan",19),person("lisi",16),person("zhangsan",21),person("wangwu",23),]print("-----------未排序-----------------")for p1 in ps: print(p1)print("-----------排序后-----------")for p1 in sorted(ps): print(p1)
这段代码中,我们直接print(p+p1),最后输出结果
我是zszs,今年38岁
这是因为我们重写了__str__和__add__
如果不重写__str__的话,只会输出这个对象的内存地址,
而__add__则是让我们重写了+这个运算符,让两个对象可以相加并得到我们想要的数值然后return
最后__lt__的重写是重写了比较运算符,让我们在调用sorted函数的时候可以让两个对象进行我们需求的比较并排序。
Python实现简单List
'''定义迭代器: 两种: 1.yield 生成器 函数编程方式 2.类中提供 __iter__ __next__ 方法 面向对象编程方式 __iter__ 的方法要返回一个具有__next__方法的对象引用'''class MyList: class Node: def __init__(self): self.data = None self.next = None def __init__(self): self.head = None self.tail = None self.size = 0 def add(self,data): self.size += 1 n = self.Node() n.data = data if self.head== None: self.head = n else: self.tail.next = n self.tail = n def getSize(self): return self.size def get(self,i): p = self.head for j in range(0,i): p = p.next return p.data def __iter__(self): self.p = self.head return self def __next__(self): pl = self.p self.p = self.p.next return pl.datamy = MyList()my.add("abc")my.add("sss")my.add("cds")my.add("432")for i in range(0,my.getSize()): print(my.get(i))it = iter(my)print(next(it))def myshow(): for i in range(10,0,-1): yield ifor i in myshow(): print(i)it = iter(myshow())print(next(it))
Python实现简单二叉树
class MyBTree: class node: def __init__(self): self.data = None self.left = None self.right = None def add(self,n): if self.data>n.data: if self.left is None: self.left = n else: self.left.add(n) if self.data <n.data: if self.right is None: self.right = n else: self.right.add(n) def zhong(self): if self.left is not None: self.left.zhong() if self.right is not None: self.right.zhong() print(self.data) def __init__(self): self.root = None def add(self,data): n = self.node() n.data = data if self.root is None: self.root = n else: self.root.add(n) def zhong(self): self.root.zhong()t = MyBTree()t.add(111)t.add(33)t.add(26)t.add(200)t.add(132)t.zhong()
阅读全文
0 0
- Python学习笔记-17.09.20
- Python学习笔记20
- Python学习笔记-17.09.08
- Python学习笔记-17.09.10
- Python学习笔记-17.09.13
- Python学习笔记-17.09.15
- Python学习笔记-17.09.18
- Python学习笔记-17.09.22
- Python学习笔记-17.09.25
- Python学习笔记-17.09.27
- Python学习笔记20:Python Web编程
- 【python】:python学习笔记
- Python学习笔记-Python起步
- Python学习笔记-Python基础
- Python学习笔记-Python对象
- Python基本概念--Python学习笔记
- Python学习笔记:Python函数
- python学习笔记-python安装
- 【LeeCode】Reorder List 重排链表
- UIButton的相关属性/导航添加按钮
- QApplication::focusWidget()
- http返回值代表含义
- mybatis分页插件PageHelper的使用
- Python学习笔记-17.09.20
- mxnet-Gluon(一):mxnet-Gluon 入门
- win10 Apache+PHP安装与环境配置
- 吴佳明(普空):LVS在大规模网络环境中的应用
- J2EE中基于监听方式的事件处理机制
- POJ 1328.Radar Installation
- 使用zip压缩文件方式安装mysql 5.7
- QT如何捕获全局的键盘事件?
- UML图