多态

函数中继承类

返回父类的父类函数(),使用super(子类,self).父类的函数()

# coding:utf-8

class Animal:
    def say(self):
        print("animal")

class Dog(Animal):
    def say(self):
        # 这个super()括号中可写可不写了,都是继承一个父类,指定的类也是改自身
        return super(Dog,self).say()
class Dog1(Animal):
    def say(self):
        print("Dog")
class Cat(Animal):
    def say(self):
        print("Cat")
        

# 函数中的参数还可以使用分号
def animal_say(a: Animal): #这里把类的参数当作实例传进去了,并没有所谓的继承到函数中
    # 参数值使用冒号是函数注释,指的是输入的类型,还有个箭头指的是输出的类型,是从python3.5开始有的
    a.say()
dog = Dog1() 
cat = Cat() 
animal_say(dog)   # Dog
animal_say(cat)  # Cat
a = Dog()
# 这里难道是return返回的这个None
# 返回父类的say()函数,使用super(子类,self).父类的函数()
print(a.say()) # animal None
# 继承的父类中使用参数,不可以,缘由是父类中也没有构造方法
b = Dog()
print(b.say()) #  # animal None

函数的参数有冒号

__annotations__函数的注解

def fun(a:int): # 这个有点指定类型的意思
    print(fun.__annotations__) # __annotations__函数的注解
    print(a)

fun('a') # # {'a': <class 'int'>} a
fun(1) # {'a': <class 'int'>} 1

#!/usr/bin/python3
# -*- coding:utf-8 -*-
 
'''
冒号是参数的类型建议符,
告诉程序员希望传入的实参的类型。
函数后面跟着的箭头是函数返回值的类型建议符,
用来说明该函数返回的值是什么类型。
'''
def twoSum(num1: int, num2: int=100) -> int:
    sum = num1 + num2
    return sum
    
 # 类型建议符并非强制规定和检查,也就是说即使传入的实际参数与建议参数不符,也不会报错。
if __name__ == "__main__":
    print(twoSum.__annotations__)  # {'num1': <class 'int'>, 'num2': <class 'int'>, 'return': <class 'int'>}
    print(twoSum(1,2)) # 3
    print(twoSum(1)) # 101
    print(twoSum('I love ','Arsenal')) # I love Arsenal
    #print(twoSum('Arsenal'))

posted @ 2021-11-25 21:46  索匣  阅读(29)  评论(0编辑  收藏  举报