发布于2023-05-20 16:02 阅读(634) 评论(0) 点赞(24) 收藏(4)
面向对象编程的三大特征:封装,集成,多态
- class A:
- a_attr1 = 100
-
- def func_a(self):
- print('------func_a--------')
-
-
- class B:
- b_attr1 = 999
-
- def func_b(self):
- print('------func_b--------')
-
-
- class Demo(A, B):
- pass
-
-
- d = Demo()
- # 调用父类A的属性和方法
- print(d.a_attr1)
- d.func_a()
-
- # 调用父类B的属性和方法
- print(d.b_attr1)
- d.func_b()
-
-
- # 打印结果
- 100
- ------func_a--------
- 999
- ------func_b--------
答:就近原则,他先找括号里面左边这个类,左边这个类找到了就不会再去找右边这个类,左边的类如果找不到就去右边这个类找。
注意:如果demo这个类自己有这个方法,就不会再去父类里面找,如果demo这个类没有,才会去父类里面去找。
- class A:
- a_attr1 = 100
- attr = 10
-
- def func_a(self):
- print('----funca——————')
-
- def work(self):
- print('----funca——work————')
-
-
- class B:
- b_attr1 = 999
- attr = 99999
-
- def func_b(self):
- print('----funcb——————')
-
- def work(self):
- print('----funcb——work————')
-
-
- class Demo(A, B):
- pass
-
-
- d = Demo()
-
- # 调用两个父类中同名的方法和属性
- print(d.attr)
-
-
-
- # 打印结果
- 10
方法名上面加了@property之后,不再是方法名,而是属性名称
- class B:
- b_attr1 = 999
- attr = 99999
-
- def func_b(self):
- print('----funcb——————')
-
- def work(self):
- print('----funcb——work————')
-
-
- class Demo(A, B):
- def work(self):
- print('demo---work')
-
- @property # 定义只读属性
- def battr(self):
- return B.attr
-
-
- d = Demo()
-
- # 只读属性
- print(d.battr)
-
-
- # 打印结果
- 99999
- """
- 定义一个api测试的用例类
- 1、用例数据处理
- 2、接口请求
- 3、响应数据提取
- 3、断言
- """
-
-
- class HandleData:
- pass
-
-
- class RequestApi:
- pass
-
-
- class BaseTest(HandleData, RequestApi):
- pass
实现多态的步骤:
还是不懂多态是啥意思吗?没关系,我们上一段代码就明白了。
一个父类,他具有多个子类,不同的子类在调用相同的方法,执行的时候产生不同的形态,这个叫多态。
- class Animal(object):
- """动物类"""
-
- def func(self):
- print('动物发出了声音')
-
-
- class Cat(Animal):
- """猫类"""
-
- def func(self):
- print('喵 喵 喵')
-
-
- class Dog(Animal):
- """狗类"""
-
- def func(self):
- print('汪 汪 汪 ')
-
-
- class Hero:
- def func(self):
- print('这个是英雄类的方法,不是动物类的对象')
-
-
- def work01(musen: Animal):
- musen.func()
-
-
- work01(Hero())
多态的意义:
“开放封闭”原则:
注意点:Python中函数的参数是没有类型限制的,所以多态在python中的体现并不是很严谨。多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”。
- class Animal(object):
- """动物类"""
-
- def func(self):
- print('动物发出了声音')
-
-
- class Cat(Animal):
- """猫类"""
-
- def func(self):
- print('喵 喵 喵')
-
-
- class Dog(Animal):
- """狗类"""
-
- def func(self):
- print('汪 汪 汪 ')
-
-
- class Hero:
- def func(self):
- print('这个是英雄类的方法,不是动物类的对象')
-
-
- def work01(musen: Animal):
- musen.func()
-
-
- work01(Hero())
- """
- """
- 鸭子类型概念:它并不要求严格的继承体系,关注的不是对象的类型,而是它是否具有要调用的方法(行为)。
- 鸭子类型在python中的案例:
- 内置函数iter:参数可以是实现迭代协议(`__iter__`方法)的任何类型的对象
-
- """
- li = [11, 22, 33, 44]
- s = '1212124'
- class MyTest:
- def __iter__(self):
- return (i for i in range(10))
- def __len__(self):
- return 10
- li1 = iter(li) # 内置函数iter将可迭代对象转换为迭代器,,本质上是调用对象的__iter__
- s1 = iter(s) # 内置函数iter将可迭代对象转换为迭代器,,本质上是调用对象的__iter__
- m = MyTest()
- m1 = iter(m)
- # 内置函数len获取数据的长度,本质上是调用对象的__len__
- print(len(m))
原文链接:https://blog.csdn.net/Sean_0819/article/details/126124169
作者:听爸爸的话
链接:https://www.pythonheidong.com/blog/article/1979409/542ca5b979a9bcbfd0b1/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!