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

    1,类的概念:具有相同特征的一类事物(人,狗,老虎).

    • 对象/实例的概念:具体类的表现,具体的实实在在的一个实例(类的具体化,对象具有类的属性)
    • 实例化:类----->对象的过程
    • 面向对象的程序设计的核心是对象,面向对象变成可以使程序维护和扩展把爱你的简单,并且可以大大提高程序开发效率,另外,基于面向对象的程序可以使人更加容易理解你的代码逻辑,从而使团队开发变得更从容.

    2,类的声明

    • class Person:.................定义一个人类(class)后边的字母手字母必须大写(固定格式)
    • 列如:class Person:
    • #类体:在类声明的里边(类似于函数名里边的函数体)叫做类体,类体有以下两部分构成:1>变量部分,如下<1>部分,2>方法函数部分,如下<2>部分所示.
    class Person:
        mind = "有思想的"  # <1>部分的变量函数又叫(静态变量,静态字段)
        animal = "高级动物"  # 
        faith = "有信仰"
        
    #    def __init__(self):  # <2>方法(函数)部分也叫(动态变量)
    #       print(self)
    #        print(666)
        
        def __init___(self, name, age, sex, hobby):
            self.name = name
            self.age = age
            self.sex = sex
            self.hobby = hobby
            
        def work(self):
            print("人类都会工作...")
            
        def shop(self):
            print("人类都会消费...")

    2.1>从类名的角度,操作类体中的静态变量(静态字段)

    • 2.1.1>类名.__dict__是查找类体中查询类中所有的内容,(只能进行查找,不能进行增,删,改)如下图所示:
      • print(Person.__dict__)

    • 2.1.2>通过万能的(.)来实现对静态变量的操作(增加)
      • Person.skill = "使用工具"
      • print(Person.__dict__)

    • 2.1.3>通过万能的(.)来实现对静态变量的操作(删除)
      • del Person.faith
      • print(Person.__dict__)

    • 2.1.4>通过万能的(.)来实现对静态变量的操作(修改)
      • Person.anamal = "有时候也比较笨"
      • print(Person.anamal)...............此时打印的结果是"有时候也比较笨"
      • print(Person.__dict__)

    • 2.1.5>通过万能的(.)来实现对静态变量的操作(查找)
      • print(Person.mind)..............................................................此时打印的结果是:"有思想的" 

    3,从对象的角度对静态变量(静态字段)和方法(函数)的操作

    • 3.1>从类转化为对象(类名+()的过程:实例化的过程(创建一个对象的过程)) Person()是实例化对象
      • ret = Person()
    • print(ret)........,,,,此时打印的是

    • 当类名+() 就会产生一个对象 只要一产生对象就会自动执行__init__方法(__init__里边的参数只有(self)的时候)
    • 3.2>从对象的角度对静态变量和人动态方法去操作
      • 3.2.1>操作对象中的静态变量
        • ret= Person("name",58,"不详","烫头")............................当有参数的时候def __init__(self)不能出现
        • print(ret)

        • print(ret.__dict__)

      • 3.2.2对象对静态变量操作(查找)  
        • print(ret.name)....................................此时打印结果是:333    alex
      • 3.2.3对象对静态变量操作(增加)
        • ret.hight = 175
        • print(ret.ret)........................................此时打印结果是:333     175
        • print(ret.__dict__)......此时打印结果是:333   {'name': 'alex', 'age': 58, 'sex': '不详', 'hobby': '烫头', 'hight': 175}
      • 3.2.2对象对静态变量操作(删除)
        • del ret.name.....................................这是删除name这个键值对
        • print(ret.__dict__)..............................此时打印结果是:333    {'age': 58, 'sex': '不详', 'hobby': '烫头'}
      • 3.2.2对象对静态变量操作(修改)
        • ret.name = "太白"...............................把name = "alex"改成  name = "太白"
        • print(ret.__dict__)............此时打印的结果是:333   {'name': '太白', 'age': 58, 'sex': '不详', 'hobby': '烫头'} 
    • 3.3 >对象调用类体中的方法   (据太白说,工作中,通过对象执行类中的方法,而不是通过类名)
      • 3.3.1>调用类体中的方法(函数)
        • ret.work().................此时打印的结果是:333    人类都会工作...(直接用对象调用就好了)
      • 3.3.2对象调用类体中的方法(函数)
    class Person:
    
        def __init__(self, name, age, sex, hobby):
            self.name = name
            self.age = age
            self.sex = sex
            self.hobby = hobby
    
        def work(self):
            print("%s都会工作" % self.name)
    super = Person("wusir", 36, "", "抽烟")
    super.work()  # wusir都会工作

    4,当创造一个对象时:

    • 4.1>类名+()产生一个实例(对象,对象空间)
    • 4.2>自动执行类中的__init__方法,将对象空间传给__init__的self参数
    • 4.3>给对象封装相应的属性
     
  • 相关阅读:
    ETL利器Kettle实战应用解析系列一【Kettle使用介绍】
    彻底理解webservice SOAP WSDL
    5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task
    5天玩转C#并行和多线程编程 —— 第一天 认识Parallel
    Data Leakage 因果性
    一张图,关于 Bayes error rate,贝叶斯错误率等的分析
    玩转Node.js单元测试
    Fundebug上线Node.js错误监控啦
    聊聊"jQuery is not defined"
    深究WeixinJSBridge未定义之因
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/9378714.html
Copyright © 2011-2022 走看看