Python __ 面向对象基础
定义类
class ClassName:
#属性
.
.
.
#方法
.
.
.
小样例:
代码里面的self作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。
后面会详细说
class Point:
x=0
y=0
def toString(self):
return "({},{})".format(self.x,self.y)
a=Point()
print(a.toString())
# 结果:(0,0)
self解释:
- 在Python类中规定,函数的第一个参数是实例对象本身。
- 并且约定俗成,把其名字写为self。
(self 不是 python 关键字,可以把他换成任何名称) - 作用相当于java中的this
表示当前类的对象,可以调用当前类中的属性和方法。
构造方法__init__()
类有一个名为 init() 的特殊方法(构造方法),该方法在类实例化时会自动调用。
python默认有个无参构造方法
可以重写为有参构造方法
例如:
def __init__(self,xx,yy):
self.x=xx
self.y=yy
类方法
类方法必须包含参数 self, 且为第一个参数
私有方法: 两个下划线开头,声明该方法为私有方法。只能在类的内部调用 ,不能在类的外部调用。
例如:
def move(self,x1,y1):
self.x+=x1
self.y+=y1
def toString(self):
return "({},{})".format(self.x,self.y)
类属性
私有属性: 两个下划线开头,声明该属性为私有。不能在类的外部被使用或直接访问。
#定义基本属性
a = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__b = 0
类的继承
概述
-
Python 支持类的继承
子类(派生类 DerivedClassName)会继承父类(基类 BaseClassName)的属性和方法。
但是父类的私有属性在类外部无法直接进行访问 -
Python同样有限的支持多继承形式。
需要注意圆括号中父类的顺序:
若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
使用
class ParentClass: # 定义父类
def myMethod(self):
print ('调用父类方法')
class ChildClass(ParentClass): # 定义子类,并继承父类
方法重写
Python同样支持在子类重写父类的方法
如果想要调用父类的方法可以:
super(子类, self).父类中的方法(...))
父类名.父类中的方法(self,...)
class Parent: # 定义父类
def myMethod(self):
print ('Parent')
class Child(Parent): # 定义子类
def myMethod(self):
print ('Child')
c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法
接口
python没有接口,通常通过抽象(基)类和抽象方法实现
抽象基类
#抽象类加抽象方法就等于面向对象编程中的接口
from abc import ABCMeta, abstractmethod
class interface(object):
__metaclass__ = ABCMeta #指定这是一个抽象类
@abstractmethod #抽象方法
def Lee(self):
pass
def Marlon(self):
pass
class RelalizeInterfaceLee(interface): #必须实现interface中的所有函数,否则会编译错误
def __init__(self):
print '这是接口interface的实现'
def Lee(self):
print '实现Lee功能'
def Marlon(self):
pass
class RelalizeInterfaceMarlon(interface): #必须实现interface中的所有函数,否则会编译错误
def __init__(self):
print '这是接口interface的实现'
def Lee(self):
pass
def Marlon(self):
print "实现Marlon功能"
多态
详细请看
python多态采用鸭子类型,
直观来讲就是说:python的多态体现在实现相同方法的类,就可以放入同一个list里面,可以迭代使用,而不在意具体是哪个类