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

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

类,函数都是一种封装

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

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

 class Dog:
def __init__(self,name,gender,age):
self.name = name
self._gender = gender #'保护'变量
self.__age = age #私有变量

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

也可以用属性装饰器

 class Dog:
def __init__(self,name,gender,age):
self.name = name
self._gender = gender
self.__age = age
@property
def age(self):
return self.__age
@age.setter
def age(self,age):
self.__age =age ding = Dog('丁丁','公',5)
print(ding.name)
print(ding.age)
ding.age =10
print(ding.age)
print(ding._gender)

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

继承的优点:

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

  • 提高了代码的可维护性

  • 提高了代码的安全性

  • 是多态的前提

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

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

 #语法:
class 子类名(父类名):
pass

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

构造方法的继承

 class Animal:
def __init__(self,name,age):
self.name = name
self.__age =age
.... class Dog(Animal):
def __init__(self,name,age,gender):
#调用父类构造方法的好处,简化了子类构造方法代码,实现了代码复用
#1. super(当前类名,self).__init__(实参列表) #实参不要带self
# super(Dog,self).__init__(name,age)
# 2. super().__init__(实参列表)#实参不要带self
# super().__init__(name, age) #3. 父类名.__init__(self,其它参数)
Animal.__init__(self,name,age)
self.gender = gender

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

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

 class 子类类名(父类1,父类2....):
子类类体

最新文章

  1. ComponentOne 2016 V3 发布
  2. A.Kaw矩阵代数初步学习笔记 1. Introduction
  3. asp.net 曲线图
  4. 这些 Git 技能够你用一年了
  5. Java里this的作用和用法
  6. PHP 5.6.11 访问SQL Server2008R2
  7. 利用正则表达式解析URL
  8. HttpClient使用详解(转)
  9. OpenGL第18,19,20讲小结
  10. LoadRunner 学习笔记(1)性能测试常见术语
  11. [Excel] C# ExcelHelper操作类 (转载)
  12. MVC提交时验证
  13. Promise实现多图预加载
  14. 分布式基础通信协议:paxos、totem 和 gossip(转载)
  15. [Swift]LeetCode757. 设置交集大小至少为2 | Set Intersection Size At Least Two
  16. 题解-ZeroJudge-c686 高斯符號
  17. iOS 证书申请和使用详解(详细版)阅读
  18. 合批只是对CPU的优化,与GPU没有任何关系
  19. java常用设计模式四:观察者模式
  20. 解决Jedis链接报超时异常和connection reset异常的方法

热门文章

  1. Disruptor框架中生产者、消费者的各种复杂依赖场景下的使用总结
  2. 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(3)-项目依赖注入
  3. 【Offer】[58-2] 【左旋转字符串】
  4. TestNG(三) 基本注解BeforeMethod和AfterMethod
  5. python接口自动化测试七:获取登录的Cookies
  6. 16 (OC)* UIAnimation和CoreAnimation
  7. 如何从请求、传输、渲染3个方面提升Web前端性能
  8. JS替换字符串多余的空格符
  9. 关于瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)
  10. Salem and Sticks-萨鲁曼的棍子 CodeForce#1105A 暴力