zoukankan      html  css  js  c++  java
  • Python面向过程和面向对象基础

    总结一下:

    面向过程编程:根据业务逻辑从上到下的写代码-----就是一个project写到底,重复利用性比较差

    函数式:将某些特定功能代码封装到函数中------方便日后调用

    面向对象:对函数进行分类封装,使开发更快捷更灵活

    面向过程编程:

    1 name = "mac"
    2 age = 15
    3 sex = 'male'
    4 #......
    5 print("%s's %s,%d years old!" %(name,sex,age))

    函数式:

     1 def name(name):
     2     print('name is %s' %name)
     3 def age(age):
     4     print('age is %d' %age)
     5 def sex(sex):
     6     print('sex is %s' %sex)
     7 
     8 name('mac')
     9 age(22)
    10 sex('male')

    面向对象:

    一、封装

    封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

    所以,在使用面向对象的封装特性时,需要:

    • 将内容封装到某处
    • 从某处调用被封装的内容
    class Message():
        def __init__(self,name,age):
            self.name = name 
            self.__age = age
            
        def get_name(self):
            return self.name
        def get_age(self):
            return self.__age
    
    message = Message('MAC',23)
    print(message.get_name(),message.get_age())

    二、继承

    继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

     1 class Parent(object):
     2     def __init__(self,name,age,sex):
     3         self.name = name 
     4         self.__age = age        #表示私有
     5         self.sex = sex
     6         
     7     def get_name(self):
     8         return self.name
     9     def get_age(self):
    10         return self.__age
    11     def get_sex(self):
    12         return self.sex
    13     
    14 class Child(Parent):        #继承Parent父类
    15     def get_age(self):
    16         return self.age
    17 
    18 P = Parent('mac',22,'male')
    19 C = Child('YYY',24,'female')
    20 print(P.get_name(),P.get_age(),P.get_sex())
    21 print(C.get_name(),C.get_sex())
    View Code
     1 class Parent(object):
     2     def __init__(self,name,age,sex):
     3         self.name = name 
     4         self.__age = age        #表示私有
     5         self.sex = sex
     6         
     7     def get_name(self):
     8         return self.name
     9     def get_age(self):
    10         return self.__age
    11     def get_sex(self):
    12         return self.sex
    13     
    14 class Child1(Parent):        #继承Parent父类
    15     def get_age(self,age):
    16         self.age = age        #私有类无法继承
    17         return self.age

         def get_sex(self):
           return self.sex

    18 class Child2(Parent):
    19     def get_age(self):
    20         return self.age
    21 def func(x):
    22     x.get_age
    23 
    24 P = Parent('mac',22,'male')
    25 C1 = Child1('YYY1',24,'female')
    26 C2 = Child2('YYY2',24,'female')
    27 print(P.get_name(),P.get_age(),P.get_sex())
    28 print(C1.get_name(),C1.get_sex(),C1.get_age(23))#调用自己的get_age()

    三、多态 和多态性

    多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)

    一 什么是多态性(请务必注意注意注意:多态与多态性是两种概念。)

    多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同功能的函数。

    在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息(!!!obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。

    比如:老师.下课铃响了(),学生.下课铃响了(),老师执行的是下班操作,学生执行的是放学操作,虽然二者消息一样,但是执行的效果不同

    多态性分为静态多态性和动态多态性

    静态多态性:如任何类型都可以用运算符+进行运算

    动态多态性:如下

     1 class Parent(object):
     2     def __init__(self,name,age,sex):
     3         self.name = name 
     4         self.__age = age        #表示私有
     5         self.sex = sex
     6         
     7     def get_name(self):
     8         return self.name
     9     def get_age(self):
    10         return self.__age
    11     def get_sex(self):
    12         return self.sex
    13     
    14 class Child1(Parent):        #继承Parent父类
    15     def get_age(self,age):
    16         self.age = age
    17         return self.age
    18     def get_sex(self):
    19         print(self.sex)
    20 class Child2(Parent):
    21     def get_sex(self):
    22         print (self.sex)
    23 def func(x):
    24     x.get_sex()
    25 
    26 P = Parent('mac',22,'male')
    27 C1 = Child1('YYY1',24,'male')
    28 C2 = Child2('YYY2',24,'female')
    29 C1.get_sex()
    30 C2.get_sex()
    31 func(C1)
    32 func(C2)
  • 相关阅读:
    压测 linux + jexus + mono + asp.net mvc
    System.TypeInitializationException: The type initializer for 'Mono.Unix.Native.Stdlib' threw an exception.
    IIS配置文件路径
    服务号(已认证)与订阅号(已认证)权限区别
    解决:jquery ajax非首次请求Server端获取cookie值中文乱码问题
    解决:新版火狐浏览器3d打不开
    java中的 json 处理包
    GroupId和ArtifactId
    java环境变量完整版
    POJ-3258
  • 原文地址:https://www.cnblogs.com/nieliangcai/p/9051618.html
Copyright © 2011-2022 走看看