Python 官方文档:入门教程 => 点击学习
一、面向对象三大特征 面向对象编程的三大特征:封装,集成,多态 封装:客官的事物封装成类(将数据和方法放在一个类中就构成了封装)继承:在python中一个类可以集成于另一个类也可以继承多个类,被继承的类叫父类(或者叫基类,base clas
面向对象编程的三大特征:封装,集成,多态
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): passd = 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): passd = 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.attrd = Demo()# 只读属性print(d.battr)# 打印结果99999
"""定义一个api测试的用例类 1、用例数据处理 2、接口请求 3、响应数据提取 3、断言"""class HandleData: passclass RequestApi: passclass 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 10li1 = 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
--结束END--
本文标题: (十)python之多态
本文链接: https://lsjlt.com/news/391217.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0