• Python 面向对象 day7


    一、面向对象技术简介:

    • 类Class:用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。--(类是一个模型,一个种类,一个蓝图)
    • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。--(就是类的实例)
    • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
    • 类方法:
      @classmethod
              def shuoming(cls):
                  cls代表的就是当前这个类
                  pass
      
              1、不需要实例化就可以调用的,直接类名.xxx
              self.shuoming()也可以调用
              2、调用不了实例方法和实例变量
    • 实例方法:函数入参有self的,就是实例方法,必须实例化之后才能使用。
    • 实例:实例就是对象。
    • 实例化:创建一个类的实例,类的具体对象。
    • 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。--(如果变量前面加了self的话,在这个类里面,其他的函数都可以使用这个变量。必须得实例化之后才可以用。)
    • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。--(是公共的,谁都可以用,不需要实例化,直接在类里面定义的变量,不需要实例化就可以使用,self.xxx)
    • 局部变量:定义在方法中的变量,只作用于当前实例的类。
    • self:本类对象
    • 静态方法:只是写在类里面而已,它调用不了类方法、类变量、实例方法、实例变量,通过类名.xx使用;但类方法、实例方法可以调用它
    • 属性方法:看起来像变量的一个方法。
    类的执行顺序:

    类实例化 -> 构造函数-> 程序执行完->析构函数

    1、举例:将买车的过程化零为整为买车处

    class BuyCar:#类名一般用大写字母定义,这个类含义为买车处,化零为整
        def shop(self):#在类中定义函数,会自动加入self,带self方法的必须实例化才能用
            print('4s店')
    
        def baoxian(self):
            print('保险公司')
    
        def shuiwuju(self):
            print('税务局')
    
        def cheguansuo(self):
            print('车管所')
    
    xiaowang = BuyCar()# BuyCar()类名加上括号就是实例化,xiaowang就是一个实例又叫对象
    # BuyCar.shop()#类不能直接用,会报错TypeError: shop() missing 1 required positional argument: 'self'
    xiaowang.shop()#实例调用类中的方法
    xiaowang.baoxian()
    xiaowang.shuiwuju()
    xiaowang.cheguansuo()

    2、举例:上帝造人

    class Person:
        country = 'China'#country为类变量,公共的,谁都可以用
        def __init__(self,name,leg=2):#构造函数,类在实例化的时候,自动执行
            # 加上self,在整个类里其他函数都可以用
            self.name = name#属性
            self.leg = leg
            print('self的内存地址',id(self))
        def __del__(self):#析构方法,类实例被销毁的时候自动执行析构方法里面的代码
            print('什么时候执行到这里的方法呢')
        def fly(self):#方法
            print('%s会飞'%self.name)
            self.bird = '猫头鹰'#self不只可以加到init中,可以加到类里的其他方法中
        def eat(self):
            print('%s会吃饭'%self.name)
            print('我要吃%s'%self.bird)
    
        def la(self):
            print('拉了%s次' % self.count)
    
        def say(self):
            print('我的名字是【%s】,我有【%s】条腿'%(self.name,self.leg))
            print('国籍是%s'%self.country)#必须用self.country,直接写country会报错
  • 相关阅读:
    小四学习系列教程
    SQL分组多列统计(GROUP BY后按条件分列统计) -转
    fdisk:command not found
    PWA最简单例子
    Rider 2017.1.1下跑AVD出现Unexpected schema version 3错误的解决方法
    困扰:C#.net 连接Oracle11g 不报错但是在connection时出现 ServerVersion 引发了“System.InvalidOperationException”类型的异常
    JQuery EasyUI datagrid 复杂表头处理
    sql server 与oracle 中字段类型的对应
    Oracle 11g导出空表、少表的解决办法
    JS组件系列——两种bootstrap multiselect组件大比拼
  • 原文地址:https://www.cnblogs.com/candysalty/p/11177326.html
Copyright © 2020-2023  润新知