Python_面向对象设计

一  三大编程范式

编程范式即编程的方法论,一种编程风格

三大编程范式

    1.面向过程编程

    2.函数式编程

    3.面向对象编程

    把一类事物的相同 特征和动作 整合到一起 就是类,类是一个抽象的概念

对象

    基于类而创建的具体的事物,也是具体的特征和动作 整合到一起

 

二 面向对象设计 与 面向对象编程

面向对象设计(Object oriented design):将一类 具体事物的 特征属性和动作 整合到一起 ,即面向对象设计

 

    面向对象设计(OOD)不会特别要求使用 面向对象编程语言,事实上,OOD可以用纯结构化语言来实现(比如C语言),但是如果想要构造具备对象性质和特点的数据类型,就需要在程序 上作更多的努力

    下面的是面向对象的首个版本

#面向对象设计思想,假设把人作为一个对象,有什么特征属性呢,会有什么行为呢
def human(name,age,gender):
    def eat():
        pass
        print("%s is %i years old & is eating !!!" %(name,age))
    def sport():
        pass
        print("%s is %i years old & is in motion!!! " %(name,age))
    #把特征属性及行为列出
    humam_p = {
        'name':name,
        'age':age,
        'gender':gender,
        'eat':eat, #后面的eat函数的内存地址,再加上()变成eat()便可执行函数
        'sport':sport #后面的sport函数的内存地址,再加上()变成sport()便可执行函数
    }
    return humam_p #让我们的函数有返回值

print(human("James",18,"male")) #看返回值,是个字典,想执行字典里的函数怎么办
human("James",18,"male")['eat']() #加()就是执行eat()方法
human("James",18,"male")['sport']() #加()就是执行eat()方法

 

    下面是面向对象的第二版本

#面向对象设计思想,假设把人作为一个对象,有什么特征属性呢,会有什么行为呢
def human(name,age,gender):
    # 把特征属性及行为列出,,数据 和 动作 分离
    def init(name,age,gender):
        human_p = {
        'name': name,
        'age': age,
        'gender': gender,
        'eat': eat,  # 后面的eat函数的内存地址,再加上()变成eat()便可执行函数
        'sport': sport  # 后面的sport函数的内存地址,再加上()变成sport()便可执行函数
    }
        return human_p
    def eat(human_p):
        pass
        print("%s is %i years old & is eating !!!" %(human_p['name'],human_p['age']))
    def sport(human_p):
        pass
        print("%s is %i years old & is eating !!!" %(human_p['name'],human_p['age']))
    return init(name,age,gender) #让我们的函数有返回值

man1 = human("James",18,"male")
man2 = human("Mango",17,"female")
man1['eat'](man1) #加()就是执行eat()方法
man2['eat'](man2) #加()就是执行eat()方法

 

面向对象编程(Object-oriented programming):用定义类+实例/对象的方式去实现面向对象设计

class Human:
    '类的文档说明字符串'
    def __init__(self,name,age,gender):
        self.name = name
        self.age = age
        self.gender = gender

    def eat(self):
        print("%s is %i years old & is eating !!!" % (self.name, self.age))
    def sport(self):
        print("%s is %i years old & is in motion!!! !!!" % (self.name, self.age))

#Human类实例化出一个对象,名叫man1
man1 = Human("James",22,"male")
print(man1.__dict__) #_init_其实返回的就是字典
man1.eat()

 

 

三 类和对象

类:类是一种数据结构,好比一个模型,该模型用来表述一类事物(数据属性和动作的结合体),用类来生产真实的物体(实例)

 

对象:你能看到的都可以是对象

 

类与对象的关系:对象都是由类产生的,就像上帝造人,上帝先有一个模块,然后根据定义来生产一个个人(对象)

 

实例化:由类生产对象的过程就叫实例化,类实例化的结果就是对象(对象也叫实例)

 

三.1.1 经典类 & 新式类 python3都是新式类

三.1.2 属性

    类的对象都是事物,事物都有属性

        属性分为两种

            1,数据属性:变量

            2,函数属性:函数,在面向对象里通常叫方法

#Human类实例化出一个对象,名叫man1
man1 = Human("James",22,"male")
print(dir(Human)) #列出属性名称,列表
print(Human.__dict__) #_列出属性名称及其对应的值,字典
man1.eat()

 

print(Human.__dict__['__doc__']) #取出某个属性,和下面的完全一样
print(Human.__doc__) #取出某个属性,和上面的完全一样

 

    特殊的类属性

 

print(Human.__name__) #类的名字
print(Human.__doc__) #类的文档字符串
print(Human.__base__) #类的第一个父类(继承)
print(Human.__bases__) #类的所有父亲构成的元组(继承)
print(Human.__dict__) #类的属性
print(Human.__module__) #类的定义所在的模块
print(Human.__class__) #实例 对应的类(仅新式类)

 

 

三.2 对象相关知识

对象是由类实例化而来

三..2.1 实例化

 

posted on 2019-08-11 12:38  詹生  阅读(327)  评论(0编辑  收藏  举报

导航