2018-12-5 08:35:21
2.7 面向对象介绍
- Python编程,一切皆对象(字符串对象,字典对象。。。)
- 面向过程和面向对象编程
面向过程编程: 函数式编程,shell脚本,python脚本,C语言编程等
面向对象编程: C++,Java,Python等
类和对象
- 类和对象是面向对象中两个重要的概念
**类:**是对事物的抽象,比如:人类,球类等
**对象:**是类的一个实例,比如:男人,足球等 - 实例说明
球类可以对求的特征和行为进行抽象,然后实例化一个真实的蓝球、足球等
为什么面向对象
- 面向对象的主要思想
封装
继承
多态
- 这种思想方便解决较为复杂的项目,且维护比较容易
面向对象技术简介
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重载:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重载。
- 实例变量:定义在方法中的变量,只作用于当前实例的类。
- 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal)。
- 实例化:创建一个类的实例,类的具体对象。
- 方法:类中定义的函数。
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
python定义类
- 类定义
类把需要的函数和变量组合在一起,这种包含为‘封装’
class A(object):
- 类的结构
class 类名:
成员变量–> 属性
成员函数–> 方法
#使用class语句来创建一个新类,class之后为类的名称并以冒号结尾
class ClassName(object):
a = 'hello'
def fun(self):
b = self.a
print '123456'
print b
c = ClassName()
c.fun()
---------------------------------
123456
hello
---------------------------------
解析:
a为类的静态属性
fun为类的动态方法,且方法中至少有一个参数self
对象的创建
- 创建对象的过程称之为实例化
当一个对象呗创建后包含三个特性:对象句柄、属性和方法
句柄用于区分不同的对象
对象的属性和方法与类中的成员变量和成员函数对应
- obj = ClassName()
创建类的一个实例(对象)通过对象来调用方法和属性obj.fun(),obj.a
2.8 类的属性
- 类的属性按使用范围分为公有属性和私有属性,类的属性范围取决于属性的名称
- **公有属性:**在类中和类外都能被调用的属性
- **私有属性:**不能再类外及被类以外的函数调用
定义方式:以‘__’双下划线开始的成员变量就是私有属性
可以通过instance._classname_attribute方式访问(测试使用)
- **内置属性:**有系统在定义类的时候默认添加的,由前后双下划线构成‘dict’
2.9 类的方法
- 方法的定义与函数一样,但是需要self作为第一个参数
- 类的方法分为:
公有方法:在类中和类以外都能被调用的方法
私有方法:不能被类的外部调用,在方法前面加‘__’双下划线就是私有方法
类方法:被classmethod()函数处理过的函数能被类调用,也能被对象调用(继承关系)
静态方法:被staticmethod()函数处理的,相当于‘全局函数’,可以被类之间调用,可以被所有实例化对象共享,静态方法没有‘self’参数
- self参数
用于区分函数和类的方法(必须有一个self),self参数表示执行对象本身
- 装饰器:
@classmethod()
@staticmethod()
封装
继承
多态
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重载:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重载。
- 实例变量:定义在方法中的变量,只作用于当前实例的类。
- 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal)。
- 实例化:创建一个类的实例,类的具体对象。
- 方法:类中定义的函数。
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
python定义类
- 类定义
类把需要的函数和变量组合在一起,这种包含为‘封装’
class A(object):
- 类的结构
class 类名:
成员变量–> 属性
成员函数–> 方法
#使用class语句来创建一个新类,class之后为类的名称并以冒号结尾
class ClassName(object):
a = 'hello'
def fun(self):
b = self.a
print '123456'
print b
c = ClassName()
c.fun()
---------------------------------
123456
hello
---------------------------------
解析:
a为类的静态属性
fun为类的动态方法,且方法中至少有一个参数self
对象的创建
- 创建对象的过程称之为实例化
当一个对象呗创建后包含三个特性:对象句柄、属性和方法
句柄用于区分不同的对象
对象的属性和方法与类中的成员变量和成员函数对应
- obj = ClassName()
创建类的一个实例(对象)通过对象来调用方法和属性obj.fun(),obj.a
2.8 类的属性
- 类的属性按使用范围分为公有属性和私有属性,类的属性范围取决于属性的名称
- **公有属性:**在类中和类外都能被调用的属性
- **私有属性:**不能再类外及被类以外的函数调用
定义方式:以‘__’双下划线开始的成员变量就是私有属性
可以通过instance._classname_attribute方式访问(测试使用)
- **内置属性:**有系统在定义类的时候默认添加的,由前后双下划线构成‘dict’
2.9 类的方法
- 方法的定义与函数一样,但是需要self作为第一个参数
- 类的方法分为:
公有方法:在类中和类以外都能被调用的方法
私有方法:不能被类的外部调用,在方法前面加‘__’双下划线就是私有方法
类方法:被classmethod()函数处理过的函数能被类调用,也能被对象调用(继承关系)
静态方法:被staticmethod()函数处理的,相当于‘全局函数’,可以被类之间调用,可以被所有实例化对象共享,静态方法没有‘self’参数
- self参数
用于区分函数和类的方法(必须有一个self),self参数表示执行对象本身
- 装饰器:
@classmethod()
@staticmethod()
类把需要的函数和变量组合在一起,这种包含为‘封装’
class A(object):
class 类名:
成员变量–> 属性
成员函数–> 方法
#使用class语句来创建一个新类,class之后为类的名称并以冒号结尾
class ClassName(object):
a = 'hello'
def fun(self):
b = self.a
print '123456'
print b
c = ClassName()
c.fun()
---------------------------------
123456
hello
---------------------------------
解析:
a为类的静态属性
fun为类的动态方法,且方法中至少有一个参数self
- 创建对象的过程称之为实例化
当一个对象呗创建后包含三个特性:对象句柄、属性和方法
句柄用于区分不同的对象
对象的属性和方法与类中的成员变量和成员函数对应 - obj = ClassName()
创建类的一个实例(对象)通过对象来调用方法和属性obj.fun(),obj.a
2.8 类的属性
- 类的属性按使用范围分为公有属性和私有属性,类的属性范围取决于属性的名称
- **公有属性:**在类中和类外都能被调用的属性
- **私有属性:**不能再类外及被类以外的函数调用
定义方式:以‘__’双下划线开始的成员变量就是私有属性
可以通过instance._classname_attribute方式访问(测试使用) - **内置属性:**有系统在定义类的时候默认添加的,由前后双下划线构成‘dict’
2.9 类的方法
- 方法的定义与函数一样,但是需要self作为第一个参数
- 类的方法分为:
公有方法:在类中和类以外都能被调用的方法
私有方法:不能被类的外部调用,在方法前面加‘__’双下划线就是私有方法
类方法:被classmethod()函数处理过的函数能被类调用,也能被对象调用(继承关系)
静态方法:被staticmethod()函数处理的,相当于‘全局函数’,可以被类之间调用,可以被所有实例化对象共享,静态方法没有‘self’参数 - self参数
用于区分函数和类的方法(必须有一个self),self参数表示执行对象本身 - 装饰器:
@classmethod()
@staticmethod()