测牛学堂:软件测试python学习之面向对象的多态和私有属性详解

62 阅读1分钟

面向对象的多态

多态就是不同的子类对象调用相同的父类方法,产生的不同执行结果。
作为软件测试人员,多态的使用几乎用不到,但是作为面向对象的三大特性,我们还是要有一个了解的。
代码实例:

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