【Python】学习笔记15(访问限制、继承和多态)

Class内部可以有属性和方法,而外部可以通过调用实例变量的方法来操作数据。外部代码可以自由地修改不严格的(变量公开)类中的数据。

如果要让内部属性不被访问或修改,将形如XXX的变量改成__XXX的变量,就可以变公开为私有,使得只有内部可以访问,外部不能访问。如   self.__name = name.这时Python解释器会将这个变量改成带有类名称的变量,如self.__name,会变成self._Student__name(3.6&2.7).

如果外部代码要获取的话,可以在类中增加新的获取函数,返回相应的数据。

如果外部代码要修改的话,同样是在类中增加修改函数,返回新的数据。

_XXX(单下划线非公开变量),即使可以访问,但习惯上不这样子做。

__XXX(双下划线的),作为实例变量并不是不允许访问,而是Python解释器该变量修改成了带有类名称的变量(版本3.6&2.7),仍然可以通过_类名称__XXX来访问__XXX。但这并不被建议,因为不同版本的Python可能会改成不同的变量名。


继承的父类子类:定义一个类A(object),再定义一个类B(A),A是B的父类(也称基类、超类),B是A的子类。子类继承时,括号要传入父类的类名称。继承可以一层一层的往下继承。

继承后,子类获得了父类的全部功能。当子类和父类存在相同的方法(函数),代码总是会先调用子类的方法。

多态:在继承关系中,如果一个实例的数据类型是某个子类,那它的数据类型也可以被看做是父类的。反过来则不行。不管新建立的类多复杂,只要这个类是父类的子类,则它就是多态的,前面写的代码也不用修改。

开闭原则:对扩展开放,允许新增子类;对修改封闭,不需要修改依赖父类的已定义的函数。

静态语言:函数的传入对象必须是参数对应的类型,否则,将无法调用方法;

动态语言:只需要保证传入的对象有对应的方法即可调用。

你可能感兴趣的:(【Python】学习笔记15(访问限制、继承和多态))