• 面向对象


    会用,会写,即可.解释都是官方的 .实际中编码的思想都是面向过程的.

    面向--->过程 :从过程的角度来考虑问题.是大锅饭的模型,国有化
    好处:容易理解一步接一步,环环相扣.适合做小型的开发
    坏处:耦合性强,不利于团队开发.重复代码多.

    面向--->对象:利于团队开发,降低耦合度.分田到户了,私有化了
    换了称呼了,方法,属性,对象,实例
    每个人出来的抽象的东西不一样
    棋盘(刷新界面,显示棋子),棋手(下棋),计算系统(判断胜负).谁出了问题就找谁
    降低耦合性,依赖性
    对象:属性-->变量,方法-->函数 (对象--->过程的对应关系)
    这些功能函数属于某个对象
    对象.方法 函数是公有的, 方法是私有的.

    还是有一定的耦合性,只是降低了耦合性
    优点:将数据和业务抽象为对象,有利于程序整体结构的分析和设计,使设计思路更加清晰
    缺点:不好理解

    对象:
      承载数据,执行操作的一个具体事物.有一些是看的见的有一些是我们抽象出来的(五子棋的计算系统)

    对象的组成: 1.保存数据的叫属性,类似面向过程中的变量   2.实现操作,行为,功能的叫方法.类似面向过程的函数.对象只由这两个部分组成

    类名:大驼峰命名
    类:物以类聚,人以群分.存在相同的操作行为.用来描述多个对象共同行为的集合.
    通过类来描述对象的属性和方法.类里面来定义对象的属性和方法.
    类是一个对象的集合

    类和对象的关系:类是创建对象的模板.或者说是 制造手册.类总结了对象的共同特征.用来定义对象的公共行为.

    每个对象必须有一个类.有对象之前必须有类.但是细究下去,说不清楚.

    比如:飞机图纸就是一个类,根据这个就可以早出许多飞机(对象)

    模板 ---- > 类

    真正实现行为的是对象.类只是来描述对象的行为方法.

    想要有类,先要心中有一个对象.即将看到的物体抽象成一个对象,然后才能有类.

    类中既可以有属性,也可以有方法.

    # 类和方法只会执行一次
    class Dog:
        """定义狗类"""
    
        def drink(self):  # 方法会自动添加一个形参self,在类的里面.self:位置参数,必须给一个实参   编程中原则:  谁制造,谁使用
            print(self)  # <__main__.Dog object at 0x0000018ABAE7B208>
            print('喝点江小白')
    
        # print(self)
    
    
    # 创建对象  有一个返回值,拿个变量接收一下
    dog1 = Dog()  # 实际上是一个全局变量,这里我们将保存一个对象的变量称之为dog1对象
    dog1.drink()  # 对象.方法()       Pycharm提示:    v:变量 variable,f:函数 function,m:方法 method c:类 class
    print(dog1)  # <__main__.Dog object at 0x0000018ABAE7B208>
    
    # print(self)和print(dog1)的值一样了. 这样就说明self就是dog1
    # 调用方法时不需要手动添加实参,解释器会自动添加一个实参给形参(位置参数)

    定义属性:

    class Dog:
        """定义了一个Dog类"""
        def eat(self):
            print('吃鸡')
            # print(self)  # 如果在eat()方法中不调用self参数,eat()会提示:警告eat()可能是一个static静态方法.
    
    
    dog1 = Dog()
    dog1.eat()
    
    a = 10  # 给一个变量赋值
    print(a)  # 调用(输出)这个变量的值
    
    # 格式:对象.属性 = 值  首次给属性赋值叫定义属性(创建属性)
    dog1.name = 'xiaowang'  # 定义属性
    dog1.name = 'xiaowang11'  # 修改属性的值,这两个是同一个属性,只是值不一样了
    print(dog1.name)
    
    dog1.age = 2
    print(dog1.age)

    创建多个对象:

    class Dog:
        def drink(self):
            print('喝娃哈哈')
    
        def eat(self):
            print('吃排骨')
    
    
    # 类中定义的方法会被此类创建出来的所有对象共享
    dog1 = Dog()  # <__main__.Dog object at 0x000002481333B8D0> 写一次就是一个新的对象.内存地址值肯定不一样
    dog2 = Dog()  # <__main__.Dog object at 0x000002481333BAC8>写一次就是一个新的对象.内存地址值肯定不一样
    print(dog1)
    print(dog2)
    
    dog1.drink()
    dog2.drink()
    
    # 方法是共有的,但是属性是每一个对象所独有的,各自记录各自的数据
    dog1.name = 'xiaohei'
    dog2.name = 'xiaohua'
    # 两个同类型的对象,可以有同名的属性,互不影响.同名的属性是各自记录各自的数据.私有的
    print(dog1.name)
    print(dog2.name)
    
    dog1.age = 2
    
    # 类:前后空2行  类在第一行时不用这么写

    关于self:

    """
    self代表类创建出来的某个对象.在调用方法时,会将调用此方法的对象作为第一个实参传递给self,在方法中使用对象属性时,尽量使用self去操作属性
    
    self在方法外面时,无法使用.需要使用对象.
    
    """
    
    class Dog:
        def eat(self):  #在方法中操作对象的属性时,尽量使用self.在类中操作对象的属性的时候也是这样.注意是在同一个类.
            # print('%s吃面包' % dog1.name)
            print('%s吃面包' % self.name)  # self:谁使用就是谁,self是一个特殊的形参.这里的self.name就是Dog类的属性,在创建对象之后对属性进行赋值.所以下面name='小花'
    
    
    dog1 = Dog()
    dog1.name = '小花'
    dog1.eat()
    
    dog2 = Dog()
    dog2.name = '小白'
    dog2.eat()  # 调用方法时,Python解释器会自动把调用此方法的对象作为第一个实参传递给self
  • 相关阅读:
    'yiiaseInvalidRouteException' with message 'Unable to resolve the request "site/error".'
    yii2:不使用composer安装yii2-jui的方法
    Oracle cmd乱码
    oracle 11g安装过程中问题:移动binoralbac11.dll 到binoralbac11.dll.dbl出错
    yii2打印数据属性(字段名)/数据
    在xampp集成环境下使用 php 连接oracle
    phalcon: 项目地址/P(.*), 项目地址/Pbaidu 与 路由
    PHP返回32位与16位的md5加密值
    PHP调用webservice接口
    java:日期格式化
  • 原文地址:https://www.cnblogs.com/huaibin/p/12097146.html
Copyright © 2020-2023  润新知