函数的三大特性(二)
#多态:
什么是多态:
一个类表现出的多种状态,通过继承来实现的。
在java中的表现:在一个函数中需要给参数指定数据类型,如果这个地方可以接收两个以上类型的参数,
那么这些类型应该有一个父类,这个父类是所有子类对象的类型。
在python中:函数的参数不需要指定数据类型,所以我们也不需要通过继承的形式来统一一组类的类型,
换句话说 所有的对象其实都是object类型,所以在python当中其实处处是多态。
#鸭子类型
print()#所有对象都是鸭子类型
不是明确的通过继承实现的多态,而是通过一个模糊的概念来判断这个函数能不能接受这个类型的参数
#封装
广义上的封装
class 类名:
def 方法1(self):pass
是为了只有这个类的对象才能使用定义在类中的方法
狭义上的封装
把一个名字藏在
class Goods:
__discount = 0 #私有的静态变量
print(__discount)
print(Goods.__discount) #在类的外部不能引用私有的静态变量
类中的静态变量和方法名在程序加载的过程中就已经执行完了,不需要等待调用。
在这个类加载完成之前,Goods这个名字还没有出现在内存空间中
私有的静态属性可以在类的内部使用,用来隐藏某个变量的值
class Goods: __discount = 0 # 变形:_类名__私有变量 # print(Goods.__dict__) print(Goods._Goods__discount) '''编程规范的角度出发 我们不能在类的外部是使用私有的变量'''
class Student: def __init__(self,name,age): self.__name = name self.age = age def name(self): return self.__name zhuge = Student('诸葛',20) print(zhuge.name()) print(zhuge.age) zhuge.age = 'adas' print(zhuge.age)
类中的私有成员:
1.私有的静态属性
2.私有的对象属性
3.私有的方法
我们为什么要定义一个私有变量?
1.我不想让你看到这个值
2.我不想让你修改这个值
3.我想让你在修改这个值的时候有一些限制
4.有些方法和属性不希望子类继承