Advanced Python (13) ---- Object-Oriented

day21

A process-oriented programming Dian vs vs functional programming object-oriented programming

Process-oriented:

In short, step by step, step by step completion, is to analyze the steps required to solve the problem, then use the function to implement these steps, step by step, when used in a call to a turn on it.

###   来自百度百科
    面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想。可以说面向过程是一种基础的方法。它考虑的是实际地实现。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。对比面向过程,面向对象的方法主要是把事物给对象化,对象包括属性与行为。当程序规模不是很大时,面向过程的方法还会体现出一种优势。因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。比如拿学生早上起来这件事说明面向过程,粗略的可以将过程拟为:
    (1)起床
    (2)穿衣
    (3)洗脸刷牙
    (4)去学校
    而这4步就是一步一步地完成,它的顺序很重要,你只需要一个一个地实现就行了。

# C语言就是面向过程,虽然缺点很多,但是面向过程是编程的一种重要思想.C语言也算是其他更高级语言的'鼻祖'

Functional programming:

###   来自百度百科
    函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)
    
# 简易理解: 函数式编程也是面向过程,函数式编程是极其简化的封装一个功能或一个动作, 由函数名+()去调用执行.减少代码的重复,对要完成的功能思路清晰.

优点:
    代码简洁,开发快速
    接近自然语言,易于理解
    更方便的代码管理
    易于"并发编程"
    代码的热升级

缺点:
    严重占用计算机资源

# 常见的函数式语言: scale  python

Object-oriented:

###  来自百度百科
    面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。
    
#简易理解:
    1. 面向对象三大特性:封装(对相似功能的集合操作),继承(提高代码的重复利用),多态(复杂~~)
    2. 万物皆'对象'
    3. 类:一个共享相同结构和行为的对象的集合
    
#优缺点:
    优点:易维护、易复用、易扩展,可使系统更加灵活、更加易于维护 
   缺点:性能比面向过程低,

Two object-oriented structure Dian

# class 关键字 , 类名(采用驼峰命名,首字母大写)
class Student:      # 类是相似功能的集合体.

    daily = '学习'
    examination = '考试'


    def work(self):
        print('每天要上课')

    def homework(self):
        print('家庭作业')

s1=Student()        # s1就是对象,类的具体体现.

Wed and using the class name of the class from the angle

class Student:

    '''
    备注信息
    '''


    daily='学习'   # 变量( 之前 )  静态属性,属性
    exam='考试'

    def work(self):  # 函数(之前) 方法,动态方法
        print('上课了')
    def homework(self):
        print('做作业了')

  

###  类名角度 :  调用 类中的属性
    # 1.查看类中所有的内容  , 类名.__dict__ 只用于获取类中的全部
print(Student.__dict__)
    # 2. 查看类中单个内容,  类名.属性名
print(Student.daily)      # 查看静态属性
Student.cloth='校服'      # 增加静态属性
Student.exam='大手大脚三'  # 修改静态属性
del Student.exam         # 删除静态属性
print(Student.__dict__)


###  类名调用类中的方法
Student.homework('moja')    #这里必须传参数, 因为homework方法中有self位置参数存在


# 一般类中的属性都是通过类名.的方式去操作

Four Dian instantiate an object

# -*-coding:utf-8-*-
# Author:Ds

class Student:
    '''
    备注信息
    '''

    daily = '学习'  # 变量( 之前 )  静态属性,属性
    exam = '考试'


    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def work(self,color):  # 函数(之前) 方法,动态方法
        self.color=color
        print(f'{self.name} 上课了')

    def homework(self):
        print('做作业了')


stObj1=Student()   # 类名() 过程就叫实例化过程,实例化一个对象
stObj2=Student()   # 类名() 过程就叫实例化过程,实例化一个对象
print(stObj1)     # 对象,实例 <__main__.Student object at 0x000001E6DF2E9DD8>
print(stObj2)     # 对象,实例 <__main__.Student object at 0x000001E6DF2E9DD8>


#### 实例化一个对象时,发生了三件事情
    # 1. 在类名+()会内存中创建一个对象空间
    # 2. 自动执行__init__方法 ,并且将对象空间传给self
    # 3. 执行__init__方法的代码,给对象封装其属性

### 从对象角度研究类:
    # 对象操作对象里面的属性
    obj=Student()
    print(obj)          # 对象的内存地址, 对象会在内存创建一个以obj为名的内存空间
    #对象查看全部属性
    print(obj.__dict__)

    #对象可以操作对象空间的属性
    obj.age='12'         # 增, 在以obj为名的内存空间中,添加一个age属性
    obj.name='bl'        # 增, 在以obj为名的内存空间中,添加一个name属性
    print(obj.__dict__)
    del obj.name         # 删除, 删除是obj名称空间内的name属性
    obj.age='2321'       # 改  , 修改的是obj名称空间内的age属性
    print(obj.__dict__)  # 查看 , obj名称空间的全部属性,以字典的形式

    
### 对象 查看类中的属性
    mc=Student()            
    print(mc.exam)       # 对象,  查看/获取类中的静态属性,不能修改和删除


### 对象调用类中的方法
    mc=Student('小黑',33,'弟弟')
    mc.work('绿色')       # work方法 , 是对象具有某一功能的具体方法.   简称:对象方法  
    print(mc.__dict__)    

When an object is generated, it experienced three things

Five Dian What is the self?

The first parameter is a position of self class method,

If the object is performed by this method, this interpreter will automatically transmitted to the target space as a self argument

Guess you like

Origin www.cnblogs.com/dengl/p/11139422.html