python编程基础之三十四

面向对象:三大特征:封装,继承,多态

封装:隐藏对象的实现过程,对外仅仅公开接口,控制在程序中的读取和修改的访问级别

类,函数都是一种封装

属性私有化:当类里面的属性不想被外部访问,可以将这些属性设置为私有属性,只需要家两个下划线'__', 例如:__age,这就是个私有属性,加一个下划线的成为保护属性,

可以直接访问,但是因为是保护属性所以大家对这类属性,不会特意去访问,一般不会访问,都是约定俗成的,没有具体规定要求

1 class Dog:
2     def __init__(self,name,gender,age):
3         self.name = name
4         self._gender = gender  #'保护'变量
5         self.__age = age    #私有变量
6       
View Code

当外部希望访问内部的私有的时候,可以在内部添加一个公有方法对外来访问某个私有属性

也可以用属性装饰器

 1 class Dog:
 2     def __init__(self,name,gender,age):
 3         self.name = name
 4         self._gender = gender
 5         self.__age = age
 6     @property
 7     def age(self):
 8         return self.__age
 9     @age.setter
10     def age(self,age):
11         self.__age =age
12 
13 ding = Dog('丁丁','',5)
14 print(ding.name)
15 print(ding.age)
16 ding.age =10
17 print(ding.age)
18 print(ding._gender)
View Code

成员函数私有化:也就是把方法设置为私有的,也都是两个下划线开头就行面向对象语言一个主要的功能就是”继承“,所谓继承就是使现有的类无需编码便可以拥有原有类的方法和属性。被继承的类可以称之为父类、基类、超类。继承的类可以称之为子类、派生类

继承的优点:

  • 可以简化代码,减少冗余度

  • 提高了代码的可维护性

  • 提高了代码的安全性

  • 是多态的前提

单继承:一个子类只有一个父类子类会继承父类的所有属性和方法

私有属性在子类中不能直接使用,

1 #语法:
2 class 子类名(父类名):
3     pass
View Code

object是Python中所有类的父类【一般情况下,如果一个类没有指明的父类,默认它的父类为object】

构造方法的继承

 1 class Animal:
 2     def __init__(self,name,age):
 3         self.name = name
 4         self.__age =age
 5     ....
 6 
 7 class Dog(Animal):
 8     def __init__(self,name,age,gender):
 9         #调用父类构造方法的好处,简化了子类构造方法代码,实现了代码复用
10         #1. super(当前类名,self).__init__(实参列表) #实参不要带self
11         # super(Dog,self).__init__(name,age)
12         # 2. super().__init__(实参列表)#实参不要带self
13         # super().__init__(name, age)
14 
15         #3. 父类名.__init__(self,其它参数)
16         Animal.__init__(self,name,age)
17         self.gender = gender
View Code

方法的改写:说白了就是重新写一遍新的

多继承:一个子类多个父类

1 class 子类类名(父类1,父类2....):
2     子类类体
View Code
原文地址:https://www.cnblogs.com/higer666/p/9455836.html