您的位置:首页 > 其它

面向对象的三大特性

2017-09-06 00:28 197 查看
封装

封装性:将内容封装到某个地方,以后再去调用被封装在某处的数据;

1. 将内容封装到某处;

2. 从某处调用被封装的内容;

对于面向对象的封装来说,就是使用构造方法将内容封装到对象里面,然后通过对象直接调用或者self调用被封装的数据。

#学生类
class Student(object):
def __init__(self,name,age,gender,classes,number):
self.name=name
self.age=age
self.gender=gender
self.classes=classes
self.number=number
def study(self):
pass
def pay(self):
pass
def information(self):
pass


继承

继承,即子继父业,子类是派生类,父类是基类

继承分为单继承和多继承,即:

class(父类名称)                   #单继承
class(父类名称1,父类名称2...)      #多继承


新式类和经典类的不同,在于对方法搜索顺序的不同。新式类采用广度优先继承,而经典类采用深度优先继承。以下是一个新式类和经典类分别作为基类的例子:

#class D(object):            # 新式类
class D:                      # 经典类
def eat(self):
print "D eating"
class C(D):
def eat(self):
print "C eating"
class B(D):
def run(self):
print "runing"
def eat(self):
print "B eating"
class A(B,C):
pass


继承的优点:

建造系统中的类,避免重复操作

新类经常是基于已经存在的类,这样就可以提升代码的复用程度

多态

多态是指:不同的对象可以调用相同的方法然后得到不同的结果。不过需要注意以下两点:

如果子类调用的方法,子类没有,父类有,运行父类

如果子类调用的方法,子类有,父类也有,只运行子类的

class Animal(object):  # Animal:类,盖房的图纸
def __init__(self, name, age):   #self实质是实例化后的对象本身,构造函数
self.__name = name  # self.name = "taoqi",name是属性,__name是私有属性
self.__age = age  # self.age = 6

def setName(self,name):
self.__name = name

def getName(self):
print self.__name

def run(self):
print "%s is running" % (self.__name)

def eat(self):
print "%s is eating......" %(self.__name)

def __del__(self):
print "is delete......."

class Cat(Animal):  # Cat类继承Animal类,父类/基类(Animal),子类/派生类(Cat)
def __init__(self):
super(Cat, self).__init__()

class Dog(Animal):
pass

tom = Animal("fentiao","west")
del(tom)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: