面向对象的多态
多态就是不同的子类对象调用相同的父类方法,产生的不同执行结果。
作为软件测试人员,多态的使用几乎用不到,但是作为面向对象的三大特性,我们还是要有一个了解的。
代码实例:
class Cat:
def game(self):
print('cat can game miaomiao')
class Dog:
def game(self):
print('dog can game wangwang')
class Person:
def play(self,animal):
animal.game()
xiaoming = Person()
cat1 = Cat()
dog1 = Dog()
xiaoming.play(cat1)
xiaoming.play(dog1)
私有和公有
python定义类的时候,可以给属性和方法设置访问权限。权限分为公有权限和私有权限。
公有权限:默认定义的属性和方法,都是公有的。可以在任何地方使用和读取。
私有权限:只能在类的内部去定义,只能在当前类的内部使用,不能在类的外部和子类中直接使用
私有属性语法:在属性或者方法前加上两个下划线,这个属性和方法就变成了私有属性。
代码实例:
这里的name 就是私有属性,不能被外部修改。
即使在外面赋值,也只是添加了一个属性而已,实际打印出来的还是原来的。
如果要修改私有属性,可以通过类定义的方法,调用方法来修改(可以做一些拦截限制修改的操作)
class Person:
def __init__(self,name,age):
self.__name = name
self.age = age
def __str__(self):
return f'{self.__name}:{self.age}'
def set_name(self,name):
self.__name = name
zhangsan = Person('zhangsan',18)
zhangsan.__name = 'momo'
zhangsan.set_name('lisi')
zhangsan.age = 100
print(zhangsan) # lisi:100