面向对象基础
来源:互联网 发布:手机直播完整源码 编辑:程序博客网 时间:2024/06/03 11:05
- 面向对象在不同的情况下适用
- c#, java:只有面向对象编程
- Ruby,Python:函数式编程 + 面向对象
定义对象编程格式
定义类 class 类名: def 方法1(self, bb) pass 执行类 根据类创建对象 使用对象执行类中方法
“self”
定义方法中有一个self参数,self代表的意思是本身,也就是把它的类作为一个参数,自动传入
封装
封装方法1(基本不用)
直接在self本身封装参数 backend
class Oldboy:def fetch (self): #不在方法内指定参数,而是把参数与self参数结合到一起print(self.backend) #打印self中的backend参数(因为他们俩是结合到一起的)def add_record(self, backend, record):print(backend, record)obj1 = Oldboy()obj1.backend = "www.oldboy.org" #把self对象与backend参数封装起来obj1.fetch()
封装方法2
通过构造方法给self封装参数
class Oldboy:def __init__ (self,bk): #__init__所在的这个方法,叫做构造方法self.backend = bk #普通字段:给self封装参数def fetch(self):print(self.backend)obj1 = Oldboy("www.oldboy.org") #在创建对象的时候,可以直接在后面上传参数obj1.fetch()
_init_ 构造方法,一步操作既创建对象,又封装内容的过程叫做初始化
_del_ 解释器销毁对象时自动调用,自带的,不用写。这个过程析构方法
封装使用场景:
- 当同一类型的方法具有相同参数时,直接封装到对象即可
- 把类当成模板,创建多个对象(对象内封装的数据可以不一样)
继承
- 被继承类,也就是父类,称为基类
- 继承者类,也就是子类,称为派生类
class Animals: def chi(self): print(self.Name + "吃") def he(self): print(self.Name + "喝")class Dog(Animals): #继承那个类,就在类名后面添加将继承的基类名 def __init__(self, name): self.Name = name def jiao(self): print(self.Name + "汪")xiao = Dog("小明")xiao.chi()xiao.he()xiao.jiao()
多继承
Python可以继承多个类,(c#,java不行)class Animals: def chi(self): print(self.Name + "吃") def he(self): print(self.Name + "喝")class als: def chou(self): print(self.Name + "抽")class Dog(Animals, als): #继承多个类,基类名以逗号分隔 def __init__(self, name): self.Name = name def jiao(self): print(self.Name + "汪")xiao = Dog("小明")xiao.chi()xiao.he()xiao.jiao()xiao.chou()
多继承执行顺序
- 派生类和基类同时存在的方法,优先执行派生类中的方法。
- 运行级别:本类 =》从左向右第一个基类 =》第二个基类
下图,蓝箭头代表继承关系,一个类可以继承多个基类,基类也可以继承,不同基类可能基层通一个基类。关系图如下所示。运行顺序按照从左到右的顺序,如果左边的基类B还有继承类D,那么先查找D,然后再查找C,从左到右执行的情况,在这里出现变动。
多态
多种形态,在其他语言中要给函数的参数定义一个类型,在Python中参数的类型不用固定的定义,而是根据传入参数的类,来决定参数的类型。
PHP,Python本身就是支持多态,不用刻意去做。
0 0
- 面向对象(面向基础)
- 面向对象技术基础
- 面向对象的基础
- 面向对象基础
- 第一章 面向对象基础
- VC#面向对象基础
- 面向对象基础
- 面向对象基础
- c#面向对象基础
- java基础 面向对象
- 面向对象基础术语
- 面向对象基础
- JavaScript面向对象基础
- 面向对象基础
- javascript 面向对象基础
- 面向对象基础
- 面向对象基础
- 面向对象基础
- 循环获取eq选择器的值
- mybatis的简单使用
- Maven 手动添加 JAR 包到本地仓库
- zeroc-ice网络请求使用介绍
- JAVA中重写equals()方法的同时要重写hashcode()方法
- 面向对象基础
- mysql第一篇
- Javascript apply与call函数详解
- ····BadTokenExceptionn: Unable to add window··· is your activity running?···
- 【poj 3164】Command Network 最小树形图
- iOS - 自动计算cell的高度(iOS8 Auto-sizing)
- leetcode283
- 代码规范:android版
- 聚合函数