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

    面向对象编程   
    什么是对象
        对象是指现实中的物体或实体

    什么是面向对象
        把一切看成对象(实例)用各种对象之间的关系来描述事务

    对象都有什么特征
        对象有很多属性(名词,形容词)
            姓名,年龄,性别
        对象有很多行为,(动作,动词)
            学习,吃饭,睡觉,踢球

    什么是类
        拥有相同属性和行为的对象分为一组即为一个类
        类是用来描述对象的工具,用类可以创建此类的对象(实例)

    类的创建语句 class语句
        语法:
            class 类名(继承列表)
            '''类的文档字符串'''
            实例方法
            类变量
            类方法(@classmethod)
            静态方法(@staticmethod)
        作用;
        创建一个类
        用于描述此对象的行为和属性
        类用类创建此类的一个或多个对象
        说明;
            类名必须是标识符
            类名实质是变量,它在创建类时绑定一个类

    构建函数
        调用表达式
            类名([创建传参列表])
            作用;
                创建这个类的实例对象,并返回此实例对象的引用关系
            说明:
                实例有自己的作用域和名字空间,可以为该实例添加实例变量(也叫属性)

    # constructor.py
    
    
    class Dog:
        '''此语句用来定义一个新的类型 Dog'''
        pass
    
    
    dog1 = Dog()  # 创建一个实例对象
    print(id(dog1))
    dog2 = Dog() # 创建 第二个实例对象
    print(id(dog2))
    
    lst1 = list()  # 创建一个列表对象
    print(id(lst1))
    lst2 = list()  # 创建第二个实例对象
    print(id(lst2))

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

    # instance_method.py
    
    # 此示例用于示意为Dog类添加吃,睡,玩等实例方法,以实现Dog对象的相应行为
    class Dog:
        """这是一种可爱的小动物"""
        def eat(self, food):
            '''此方法用来描述小狗吃的行为
            '''
            print("id为%d的"%id(self),end='')
            print("小狗正在吃", food)
        
        def sleep(self, hour):
            print("id为%d的小狗睡了%d小时" %
                  (id(self), hour))
    
        def play(self, obj):
            print("id为%d的小狗正在玩%s" %
                  (id(self), obj))
            # return 10 方法内可以用return返回一个引用
    
    dog1 = Dog()
    dog1.eat("骨头")
    
    dog2 = Dog()  # 创建另一个对象
    dog2.eat("狗粮")
    
    dog1.sleep(1)
    dog2.sleep(2)
    dog1.play("")
    dog2.play("飞盘")
    Dog.play(dog2, "飞盘")  # 借助类来调用方法

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

    # instance_attribute.py
    
    
    # 此示例示意创建和使用实例属性
    class Dog:
        """这是一种小动物"""
        def eat(self, food):
            '狗吃东西的行为'
            print(self.color, '',
            self.kinds, '正在吃', food)
            # 以下让当前的小狗自己记住吃的是什么
            self.last_food = food
    
        def show_info(self):
            """显示信息"""
            print(self.color, "",
                  self.kinds, '上次吃的是:',
                  self.last_food)
    
    
    dog1 = Dog()
    dog1.kinds = "哈士奇"  # 创建属性
    dog1.color = "黑白相间"  # 创建 属性color
    dog1.color = "白色"   # 修改属性color
    print(dog1.color, "", dog1.kinds)
    dog1.eat("骨头")  # 白色的....
    
    dog2 = Dog()
    dog2.color = "棕色"
    dog2.kinds = "藏獒"
    dog2.eat("狗粮")
    
    dog1.show_info()
    dog2.show_info()

    练习:
        定义一个人类
    class Human:
        def set_info(self,name,age,address='不详'):
            '''此方法用来给人对象添加'姓名’,‘年龄’,和家庭地址‘属性'''
            self.name=name
            self.age=age
            self.address=address
           
        def show_info(self):
            '''显示此人的信息'''
            print('name:','age:','address:')
    s1=Human()
    s1.set_info('小张',20,'深圳市南山区')
    s2=Human()
    s2.set_info('小李',18)
    s1.show_info()
    s2.show_info()

    del 语句用于删除实例属性
        语法;
            del 对象.实例变量
       
    del 语句小结:
        1)删除变量
            del a,b,c
        2)删除列表中的元素
            del l[0]
        3)删除字典的键值对
            del d['score']
        4)删除对象的属性(不能删除方法)
            del obj.attr
    初始化方法‘
        作用
            对新创建的对象添加属性
        格式:
            class 类名(继承列表)
                def __init__(self,形参列表)
                    语句块
        说明:
            1.初始化方法必须为'__init__’不可改变
            2)初始化方法会在构造函数创建实例后自动调用,且将实例自身通过第一个参数self传入'__init__'方法
            3. 构造函数的实参将通过__init__方法的形参列表传入到'__init__'方法中
            4. 初始化方法必须返回None

    # init_method.py
    
    
    # 此示例示意初始化方法的定义及自动调用
    class Car:
        def __init__(self, c, b, m):
            self.color = c  # 颜色
            self.brand = b  # 品牌
            self.model = m  # 型号
            print("初始化方法被调用")
    
        def run(self, speed):
            print(self.color, '',
                  self.brand, self.model,
                  "正在以", speed,
                  '公里/小时的速度行驶')
    
    
    a4 = Car("红色", '奥迪', 'A4')
    a4.run(199)
    
    t1 = Car("蓝色", "TESLA", "Model S")
    t1.run(230)

    练习:
        写一个学生类,student类,此类用于描述学生信息
        学生信息有:
            姓名,年龄,成绩(默认为0)
        1)为该类添加初始化方法,实现在创建对象时字典设置姓名,年龄,成绩
        属性,
        2)添加set_score方法,能对对象修改成绩信息
        3)添加show_info方法打印学生信息
    class student:
        def __init__(self,name,age,score):
            self.name=name
            self.age=age
            self.score=score
        def set_score(self,score):
            self.score=score
        def show_info(self):
            print(self.name,self.age,self.score)
    l=[]
    l.append(student('小张',20,100))
    l.append(student('小李',18))
    l.append(student('小赵',19,85))
    for s in l:
        s.show_info()
    l[1].set_score(70)
    print(self.name,self.age,self.score)

    析构方法“
        class 类名(继承列表)
            def __del__(self))
            ...
        作用:
            在对象销毁前释放对象占用的资源
        说明;
            析构方法会在对象销毁前被自动调用
            python 语言建议不要在对象销毁时任何市区,因为销毁时间难以确定
        示例;del_method.py

    预置实例属性(实例变量)
        __dict__属性
            此属性绑定一个存储此示例自身变量的字典
        示例:
            clas dog:
                pass
            dog1=dog()
            print(dog1.__dict__)
    __class__属性
        __class__属性绑定创建此实例的类
        作用”
            可以借助于此属性来访问创建此实例的类
        示例:
            class dog:
            dog=dog()
            print(dog1.__class__)

    用于类的函数:
        isinstance(obj,class_or_tuple)返回对象obj是否是某个类的对象或某些类的一个类的对象,如果是返回
        true,否则返回false
        type(obj) 返回对象的类型(类)
    示例:
     示例:
      isinstance(100, int)  # True
      isinstance(3.14, int)  # False
      class Dog:
          pass
      dog1 = Dog()
      isinstance(dog1, Dog)  # True
      type(dog1) is Dog  # True   

  • 相关阅读:
    201264
    asp.net 实现随机生成验证码
    数据库连接方式读取不到Excel数据值的解决方法
    如何对ArcSDE空间网格大小进行优化?
    坐标转换资料
    (转载)SDE命令行安装配置
    2008年的这些事儿
    注记多行显示问题的解决方法
    你的行为伤害了谁?
    oracle 数据备份(收藏)
  • 原文地址:https://www.cnblogs.com/sky-ai/p/9750627.html
Copyright © 2011-2022 走看看