多态
函数中继承类
返回父类的父类函数(),使用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'))
努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。