zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    mysql复习相关
    OpenStack三种类型的NAT转换
    openstack资料相关
    [转]Web 调试工具之 Advanced REST client
    [转]Aspose.Words.dll 将 Word 转换成 html
    [Android] 开发第十天
    [win10]遇坑指南
    [转]Explorer.exe的命令行参数
    [Android] 开发第九天
    [Android] 开发第八天
  • 原文地址:https://www.cnblogs.com/higer666/p/9455836.html
Copyright © 2011-2022 走看看