zoukankan      html  css  js  c++  java
  • 面向对象

    一.什么是面向对象

    1.面向过程:指的是问题解决的步骤,按照步骤去解决,将问题简单化去处理

    优点:复杂的简单化

    缺点:流程固定扩展性差.改一处就要牵动全身

    2.面向对象:一种编程的思维 OOP,是Object oriented Programing的简称,就是面向对象的英文缩写

    将程序看做是一堆对象的集合,实现功能的方式就是对象之间交互来实现

    二 类和对象

    类与对象之间的关系
    类包含了一系列相同特征和技能的对象
    对象是属于某个类的实例

    程序员在程序中相当于上帝 需要什么就创造什么
    先有类 才能通过类来产生对象,要先确定对象具备什么特征和什么行为才能产生对象

    面向对象的优缺点:
    优点:
    1.不用考虑繁琐的实现步骤,从一个操作工,变成了老板
    2.扩展性高了,当需要一个新功能时,搞一个具备新功能的对象,命令它去完成任务
    3.各个对象之间的耦合度低,当一个一个对象出现了问题,不会对其他对象产生影响
    4.可维护性高

    缺点:1.面向对象的复杂度比面向过程高
    2.无法预知执行结果,就像lol的游戏过程,一定不能把过程写死,每个英雄的行为是不固定的
    使用场景:需要较高的扩展性时,(直接与用户发生交互的程序例如,qq微信)
    对于不需要扩展的程序而言,使用面向对象反而增加了复杂度

    创建类和对象

    class Person:       定义个类
    # 用变量来描述特征
    name = "李四"
    sex = "man"
    age = 20

    obj = Person()   得到对象 通过调用类 ,也称之为实例化 或 创建对象

    三.属性的访问顺序

    查找顺序为 对象 ->  类

    当创建一个类的时候 会产生名称空间,存储类中名称和值的绑定关系
    当创建一个对象的时候 会产生名称空间,存储对象中名称和值的绑定关系
    类还有另一个作用 就是 作为对象的模板,所有属于同一个类的对象,都具备类中的公共内容

    四.初始化函数

    作为一个人 一旦出生 性别必须要指定
    带有__开头__结尾的函数 是一些特殊内置函数,会在某个时间点自动触发执行
    class Person:
    # 初始化函数名称是固定 该函数会在调用类是时自动执行,self参数必须有,表示要进行初始化的对象,系统会自动传值
    def __init__(self,name,age):
    print("执行了 __init__")
    print(self)
    self.name = name
    self.age =age

    init 函数用于初始化对象,它会在创建对象时,自动执行,并传入调用类时传递的参数,第一个参数表示要初始化的对象本身,
    self(第一个)参数不需要手动传递
    self表示对象自己 是一个形式参数,名字可以随便取,但是不建议修改

    五 绑定方法

    class Student:
    school = "BeiJing"

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

    def learning(self):
    print("正在学习..")

    def sayHI(self):
    print("hello my name is %s my age:%s my sex:%s" % (self.name,self.age,self.sex))

    # 默认情况下 在类中定义的函数都是绑定方法,共同点是,都会讲对象作为第一个参数self
    六.给类绑定方法
    绑定方法分为两种 一种是绑定给对象的.另外一种是绑定给类的
    class Student:
    school = "beijing"

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




    @classmethod
    def print_school_name(cls): #输出类里面叫school的属性
      print(cls.school)
    绑定给类的方法 使用一个装饰器叫classmethod,必须有一个参数,表示当前类.
    def sayHello(self):
    print(self.name,'说:你好') 绑定给对象

     Student.print_school_name()

    Student.print_school()

    对象绑定方法 可以使用对象来调用 也可以使用类名来调用

    在对象调用时会自动传入对象自己

    类调用时不会自动传参

    类的绑定方法,对象和类都能调用,并且都会自动传入这个类

    总结:类内定义的函数,类可以使用,但是类用的时候就是一个普通的参数,普通参数需要几个参数就要传几个.

      其实是绑定给对象用的绑定不同的对象就有不同的绑定方法.

      绑定方法的特殊之处在于,谁来调用,就会将谁当做第一个参数自动传入

    一切皆对象:在python3中统一了类与类型的概念,类即类型

  • 相关阅读:
    .NET 使用EF执行存储过程你知道几种?
    SQLserver 如何优雅的行转列
    SQLserver 如何获取近1月、近3个月、近6月数据
    三汇自动挂断问题:SIP兼容性,ACK检测,忽略ACK开启。
    几个flutter 开源项目测试
    Android versions for all users globally
    Using Flutter 2 on M1 MacOS Apple Silicon
    Educational Codeforces Round 111
    Wannafly挑战赛1
    摆烂记录
  • 原文地址:https://www.cnblogs.com/fanbiyong/p/10115689.html
Copyright © 2011-2022 走看看