zoukankan      html  css  js  c++  java
  • python面向对象编程 Object-Oriented

    面向对象编程 Object-Oriented Programing

    今天相关的名词:
      类, 对象,实例, 实例方法, 实例属性,初始化方法,析构方法
    什么是对象:
      对象是指现实中的物体或实体
    面向对象
      是把一切看成对象(实例), 用各种对象之间的关系来描述事务
    对象有什么特征:
      对象有很多属性(名词,形容词)
        姓名,年龄,性别,肤色
      对象有很多行为(动作,动词)
        学习,吃饭,睡觉,踢球
    什么是类
      拥有相同属性和行为的对象分为一组即为一个类
      类是用来描述对象的工具,用类可以创建
        此类的对象(实例)

     示意:
    
      车(类) ---> BYD 秦 京A.89898 实例
         --> BMW X5 京B.00000 实例
      狗(类) ---> 京巴(户籍:00001)
        ---> 导盲犬(户籍:00002)
      int(类) ---> 100(对象,实例)
        
        .--> 200(对象,实例)
    View Code

    类的创建语句 class 语句
      语法:
        class 类名(继承列表):
          '类的文档字符串'
          实例方法
          类变量
          类方法(@classmethod)
          静态方法(@staticmethod)
        作用:
          创建一个类
          类用于描述对象的行为和属性
          类用于创建此类的一个或多个对象(实例)

        说明:
          继承列表可以省略

    构造函数
      构造函数调用表达式
        类名([创建传参列表])
      作用:
        创建这个类的实例对象,并返回此实例对象的引用关系

    # 此示例示意用类来创建实例对象
    class Dog: # 创建类
    pass
    
    dog1 = Dog() # 创建一个Dog类的实例
    print("dog1的id是", id(dog1))
    dog2 = Dog()
    print("dog2的id是", id(dog2))
    
    lst1 = list()
    print('lst1的id是', id(lst1))
    lst2 = list()
    print('lst2的id是', id(lst2))
    View Code

    实例方法(instance method)
      语法:
      class 类名(继承列表):
        def 实例方法名(self, 参数列表):
          '方法的文档字符串'
          语句块
      作用:
        用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为
      说明:
        实例方法的实质是函数,是定义在类内的函数
        实例方法至少有一个形参,第一个形参绑定调用这个方法的实例,一般命名为'self'
      实例方法的调用语法:
        实例.实例方法名(调用传参)
        或
        类名.实例方法名(实例,调用传参)

      class Dog:
        def eat(self, food):
          print("ID为", id(self),"的小狗正在吃", food)
        def sleep(self, hour):
          print("ID为", id(self),'的小狗睡了', hour,'小时')
      dog1 = Dog()
      dog1.eat('骨头')
      dog2 = Dog()
      dog2.eat('狗粮')
      dog2.sleep(3)
      dog1.sleep(1)
      # 类名.实例方法名(实例,调用传参)
      Dog.sleep(dog1, 1)
    View Code

    实例属性(也叫实例变量) attribute
    语法:
      实例.属性名
      赋值规则
        首次为属性赋值则创建此属性
        再次为属性赋值则改变属性的绑定关系
      作用:
        记录每个对象自身的数据

      # 此示例示意属性的创建的使用
      class Dog:
        pass
    
      dog1 = Dog()
      dog1.kinds = '哈士奇'
      dog1.color = '黑白色' # 创建属性
      print(dog1.color, '', dog1.kinds)
      dog1.color = '黄色' # 修改属性
      print(dog1.color, '', dog1.kinds)
    
      dog2 = Dog()
      dog2.kinds = '京巴'
      dog2.color = '白色'
      print(dog2.color, '', dog2.kinds)
    View Code

    删除实例属性
      语法:
        del 对象.实例属性名

      如:
        class Dog:
          pass
    
      dog1 = Dog()
      dog1.color = '白色'
      print(dog1.color) # 白色
      del dog1.color
      print(dog1.color) # AttributeError
    View Code

    初始化方法
      作用:
        对新创建的对象添加属性
      格式:
        class 类名(继承列表):
          def __init__(self [, 形参列表]):
            语句块
        注: [] 代表其中的内容可省略
      说明:
        初始化方法名必须为__init__ 不可改变
        初始化方法会在构造函数创建实例后自动调用,且将实例自身通过第一个参数self传入__init__方法
        构造函数的实参将通过__init__方法的参数列表传入到__init__方法
        初始化方法内如果需要return语句返回,则必须返回None

      # 此示例示意初始化方法的定义语法和用法
      class Car:
        '''此类为小汽车类'''
        def __init__(self, c, b, m):
          self.color = c # 颜色
          self.brand = b # 品牌
          self.model = m # 型号
          print('Car类的__init__被调用')
    
    
        def run(self, speed):
          print(self.color, '',self.brand, self.model,'正在以', speed,'公里/小时的速度行驶')
    
    
      c1 = Car('红色', '奥迪', 'A4')
      c1.run(299)
    
    
      c2 = Car('白色', 'BYD', '秦EV Pro')
      c2.run(119)
    View Code

    析构方法
      del __del__(self):
        ...
      析构方法在对象被销毁前被自动调用
      python语言不建议在对象销毁时做任何事情,因为销毁的时间难以确定

      # 此示例示意析构方法的定义方式和用法
      class Car:
        def __init__(self, info):
          self.info = info
          self.file = open('mydel.txt','w')
          print("汽车", self.info, '被创建')
    
        def __del__(self): # 析构方法
          print('汽车', self.info, '被销毁')
          self.file.close() # 关闭文件
    
      c1 = Car('BYD E6')
      del c1
      input('请输入回车键继续:')
      print("程序退出")
    View Code

    预置实例属性
      __dict__属性
        __dict__属性绑定一个存储此实例自身属性的字典

      示例:
        class Dog:
          pass
        dog1 = Dog()
        print(dog1.__dict__) # {}
        dog1.color = '白色'
        print(dog1.__dict__) #{'color':'白色'}
    View Code

    __class__属性
      __class__属性绑定创建此实例的类
      作用:
        可以借助于此属性来访问创建此实例的类

      # 此示例示意 __class__属性的作用
      class Dog:
        pass
    
      dog1 = Dog()
    
      print(dog1.__class__) # __class__绑定Dog类
      print(Dog) # 等同于上句
      dog2 = dog1.__class__() # 等同于dog2=Dog()
    View Code

    用于类的函数:
      isinstance(obj, class_or_tuple) 返回这个对象obj是否是某个类的对象或某些类中一个类的对象,如果是则返回True,否则返回False
      type(obj) 返回对象的类

  • 相关阅读:
    MySQL优化
    SLAM01
    图像处理04
    Be accepted for inclusion in the IEEE INFOCOM 2018 technical program
    CS229 Lecture 02
    图像处理03
    Codeforces 900D Unusual Sequences:记忆化搜索
    Codeforces 914C Travelling Salesman and Special Numbers:数位dp
    BZOJ 4199 [Noi2015]品酒大会:后缀数组 + 并查集
    BZOJ 4650 [Noi2016]优秀的拆分:后缀数组
  • 原文地址:https://www.cnblogs.com/zhaoyang1997/p/10633065.html
Copyright © 2011-2022 走看看