zoukankan      html  css  js  c++  java
  • Python之面向对象(一)

    一、三大编程范式

    python是一门面向对象的编程语言。

    不同的编程样式有不同的风格,不同的风格有他不同的牛逼之处。

    三大编程范式:

    1. 面向过程编程
    2. 函数式编程
    3. 面向对象编程

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

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

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

     1 def Dog(name, gender):
     2     def ini(name, gender):
     3         dog1 = {
     4             "name": name,
     5             "gender": gender,
     6             "jiao": jiao,
     7             "chi": chi,
     8         }
     9         return dog1
    10     def jiao(dog):
    11         print("一条狗 【%s】,汪汪汪"%dog["name"])
    12     def chi(dog):
    13         print("一条狗 【%s】 正在吃东西"%dog["name"])
    14     dog1 = ini(name, gender)
    15     return dog1
    16 
    17 if __name__ == "__main__":
    18     d1 = Dog("狗1",5)
    19     print(d1)
    20     d1["jiao"](d1)
    面向对象设计

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

     1 class Dog:
     2     def __init__(self, name, gender):
     3         self.name = name
     4         self.gender = gender
     5     def jiao(self):
     6         print("一条狗 【%s】,汪汪汪" % self.name)
     7     def chi(self):
     8         print("一条狗 【%s】 正在吃东西"%self.name)
     9 if __name__ == "__main__":
    10     d1 = Dog("狗1", 3)
    11     print(d1)
    12     d1.chi()
    面向对象编程

    四、小结

     一门面向对象的语言不一定强制你写OO方式的程序,例如 C++可以认为是更好的C;而JACA则要求万物皆类

    在Python中,类和OOP都不是日常编程所必须的,尽管它从一开始就设计是面向对象的。

    用面向对象语言编写程序,和一个程序是面向对象设计的,两者八竿子打不着,是两码事。

    五、类和对象

    1.什么是类:类是一种数据结构,就好比一个模型,该模型用来表述一类事物。

    2.什么是对象:你看到的每一个事物都是一个对象,可以理解对象就是一个具体的事物。

    3.类与对象的关系:对象是由类产生的,类是对象的模板。

    4.什么是实例化:由类产生对象的过程叫实例化,类实例化的结果就是一个对象,或者叫实例。

    5.1 类的相关知识

    类的声明:

    1 '''
    2 class 类名:
    3     '类的文档字符串'
    4     类体
    5 '''

    # 创建一个类
    class Data:
      pass
    # 用类实例化一个对象
    d1 = Data()

     金典类和新式类:

    大前提:
    1.只有在python2中才有新式类和金典类,python3中都是新式类
    2.新式类和金典类的最大区别在于,所有新式类继承至少一个父类
    3.所有类不管是否声明父类,都默认继承object父类。
    
    在python2中:
    金典类:
    
    class 类名:
        pass
    
    新式类:
    class 类名(父类):
        pass
    
    
    python3中,上面连种定义都是新式类。

    类的属性:

    1. 数据属性
    2. 函数属性

    注意:类和对象都用 点 类访问自己的属性

    class Dog:
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender
    
        def jiao(self):
            print("一条狗 ,汪汪汪" )
    
        def chi(self):
            print("一条狗 正在吃东西")
    
    
    if __name__ == "__main__":
        Dog.jiao(123)
        print(Dog.__dict__)  # 结果是一个字典,包含类的所有属性
        print(dir(Dog)) # 结果是一个列表,包含类的所有属性名

    5.2 对象的相关知识

     对象是由类实例化得来的。

    实例化:

    class Dog:
    
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender
    
        def jiao(self):
            print("一条狗 【%s】,汪汪汪" % self.name)
    
        def chi(self):
            print("一条狗 【%s】 正在吃东西" % self.name)
    
    
    if __name__ == "__main__":
        d1 = Dog("狗1", 3)   # 类名加上括号就是实例化 d1 就是一个实例

    5.3 类属性和对象(实例)属性

    class Dog:
        master = "xioahong"
    
        def __init__(self, name, gender):
    
            self.name = name
            self.gender = gender
    
        def jiao(self):
            print("一条狗 【%s】,汪汪汪" % self.name)
    
        def chi(self):
            print("一条狗 【%s】 正在吃东西" % self.name)
    
    
    if __name__ == "__main__":
        # ==================================类属性的增删改查
        # 查看类属性
        print(Dog.master)
        # 修改类属性
        Dog.master = "xiaoming"
        print(Dog.master)
        # 删除类属性
        del Dog.master
        # 增加类属性
        print(Dog.__dict__)
        Dog.master = "me"
        Dog.home = "myhome"
        print(Dog.__dict__)
    
        # =================================实例属性的增删改查
        d1 = Dog("Dog1",5)
        # 查看
        print(d1.__dict__)
        # 增加
        d1.mather = "小花"
        print(d1.__dict__)
        # 不要通过修改底层字典的字典属性
        # d1.__dict__["father"] = "小草"
        # print(d1.__dict__)
    
        #
        d1.name = "Dog2"
        print(d1.name)
        # 删除
        del d1.name
        print(d1.__dict__)
    类和对象属性

     实例查找属性也是按照区域查找,先找实例自己的,然后才是类的。

  • 相关阅读:
    Python 的 IDLE 编辑器
    Android中如何在Eclipse中关联源代码?(图文)
    HTMl5的存储方式sessionStorage和localStorage详解
    HTML的 <u> 标签
    CSS巧妙实现分隔线的几种方法
    关于ajax跨域请求(cross Domain)
    JQuery中$.ajax()方法参数都有哪些?
    最优雅,高效的javascript字符串拼接
    深入学习JavaScript: apply 方法 详解(转)——非常好
    jQuery.ajax() 函数详解
  • 原文地址:https://www.cnblogs.com/kaixindexiaocao/p/10590855.html
Copyright © 2011-2022 走看看