python面向对象的编程复习
@ 张qianer 参考菜鸟教程,实例等,如果觉得不错点个赞吧嘻~
可能概念还是比较枯燥,跟着代码练习一定可以搞懂的哦
面向对象和面向过程的区别
- 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些问题一步一步的实现,然后再使用的时候依次调用就可以了。
- 面向对象就是把构成问题的事物分解成各个对象,构建对象的目的不是来完成一个步骤的,而是为了描述某个事物在解决整个问题的步骤中的行为。
面向对象:基于对象,方法是类
面向过程:基于算法,方法是函数、过程
注意:Python里面没有绝对的私密变量
面向对象技术简介
- 类(class):用来描述具有相同属性和方法的对象的集合 eg.Person
- 方法:类中定义的函数 Person.x()
- 类变量:类变量在整个实例化的对象是公用的,类变量定义在类中且在函数体之外,类变量通常不做为实例变量使用
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关数据
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫做方法的覆盖
- 局部变量:定义在方法中的变量,只用作当前实例的类
- 实例变量:在类的申明中,属性是用变量来表示的,这种变量就成为实例变量,实例变量就是用self修饰的变量
- 继承:继承即一个派生类,python和java不一样的是,子类可以继承多个夫类,夫类也可以有多个子类;java是一对一的关系
- 实例化:创建一个类的实例,类的具体对象
- 对象:通过类定义的结构实例,对象包括两个数据成员和方法
1. 类的定义
- 如果有子类,一定需要写object
- self表示实例变量,类变量是不需要self修饰的
class Car(object):
def infor(self):
print("This is a Car")
2. 实例化对象
- 首先需要实例化对象,新建一个成员car
- 调用成员的方法infor()
- 在python里面可以使用isinstance()来测试一个对象是否是一个类的实例
class Car(object):
def infor(self):
print("This is a Car")
car=Car()
car.infor()
isinstance(car,Car)
3. 数据成员与成员方法
3.1 私有成员与公有成员
- 私有成员的定义方式是:以两个横线开头但是不以两个横线结尾在类的外部是不能直接访问的,可以通过外部调用对象的公有成员来访问,python没有绝对的私有
class A:
def __init__(self,value1=0,value2=0):
self._value1=value1 #被保护的成员
self.__value2=values #私有成员
def show(self): # 就算没有其他参数,self也不能删除 这个就是成员方法
print(self._value1)
print(self.__value2)
a=A()
a._value1 #没有传参就直接算作默认值
a._A__value2 # 在类的外部访问对象的私有成员 (重点)
总结python以下划线开头的成员
_xxx
:一个下划线开头,保护成员,跟java一样,在同一个包下面可以自由使用,但是不能跨包使用,就是不能进行from XX import 的操作__xxx__:
前后各两个下划线,系统定义的系统成员常用的系统成员总结__xxx
:表示私有变量,上面我已经介绍过了