python自动化测试笔记9-python基础 .面向对象编程.类、实例、实例化、self、构造函数、析构函数、继承、私有

今天学习的面向对象编程,根据老师的讲解,我的理解如下:
在学习面向对象编程之前,我们完成一个功能的代码编写思路是,先做什么、再做什么,然后做什么,最后做什么这种思路。这叫面向过程编程,没有固定的语法。
那面向对象编程的思路是什么,有什么语法格式呢?
对象,词典解释“行动或思考时作为目标的事物”。当然还有另外一种意思,恋爱对象。
对象是我们要做某件事或实现某个功能的“目标事物”,我们通过对象这么一个东西实现功能,他和list、dict、方法、函数一样,是编程语言中的一个概念,假如list、dict、函数等是人的四肢,那么对象就是“人”,所以只要有了“人”,就能干很多事情了,而不仅仅是一件事情。
对象和函数一样,是要写代码来获得的,那么怎么获得对象呢?
首先,我们要制作对象的模版,就是大家常说的类,他的作用就一个,制造对象。语法如下:

   import pymysql
class MyDb:#定义类首字母尽量大写
    name='liuchanng'#属性
    def __init__(self,host,user,password,db,port=3306,charset='utf8'):#构造函数。不用调用,默认先执行
        self.conn=pymysql.connect(host=host, user=user, password=password, db=db, port=port, charset=charset)
        print('构造函数')
        self.cur=self.conn.cursor()
    def conn_mysql(self):
        print('连接myql')
    def execute_one(self,sql):
        print('返回单条数据')
        self.cur.execute(sql)
        res=self.cur.fetchone()
        return res
    def execute_many(self,sql):
        print('')
        self.cur.execute(sql)
        res = self.cur.fetchall()
        return res
    def __del__(self):
        print('1')
        self.cur.close()
        self.conn.close()
my=MyDb('118.24.3.40','jxz','123456','*****')#实例化。这个叫做类的实例化。为什么叫实例化,因为对象也叫实例
#my就是实例,对象
res=my.execute_one('select * from app_myuser where username="testuser1";')
print(res)

这是啥呀,不就是把几个方法、几个变量组合到一起,然后起个名字吗?,然后mcb = Person(‘马春波’),就造出了一个对象。然后要这个对象干啥呢?self是什么?,且听下回。。

先看这个例子

class Person:
    eyes='双眼皮'
    mouths='樱桃'

    def __init__(self,name):
        print('开始造人')
        name=name
        print(id(self))
    def cry(self,book):
        self.vv='f'
        self.book='e'
        print('%s哭%s%s'%(self.book,self.vv,self.teach))
    def say(self):
        self.book='语文'
        self.teach='niuniu'#
        self.cry('zhu')
mcb = Person('马春波')
mcb.say()#
mcb.cry('e')
print(mcb.eyes)

这是一个简单的造人的类。造了一个对象,也就是实例化了一个变量mcb。mcb可以使用say方法,可以使用cry()方法,可以使用eyes和mouths。通过使用这些方法和属性来达到我们的目的。
关于self
self.某个变量,就表示对象可以使用这个变量,例如teach这个变量,执行了mcb.say(),say方法里有self.teach变量,而cry()方法没有,再执行cry()方法,却不会报错 因为mcb这个对象已经有了teach变量,值为niuniu。所以mcb使用cry方法不会报错。但是,如果mcb先调用cry方法会报错,因为mcb这个对象还没有teach变量。
#所以,对象可以说是一个有变量和方法的集合,是个整体。self就相当于对象的影子,快捷方式。

以上是新建类,以及实例化和对象是什么,可以干什么的基本知识。然后是继承,就是我再新建一个类并且声明我的父类是谁。这样,在这个类中就可以调用父类的方法,也可以在类中重写父类中的某个方法。语法如下:
(继承的好处到底是什么,我还没什么体会,后续再写)

class Lm:
    money = 1000000
    house = 5
    def driver(self):
        print('会开车')

class Mcb(Lm):#括号中写父类的名字
    def about_me(self):
        print('我有 %s 钱 ,%s 房子'%(self.money,self.house))
        self.driver()#直接调用父类的方法

    def driver(self):#重写父类的方法
        print('会开28个轮子的汽车')


m = Mcb()
m.driver()
m.about_me()

类的私有方法和私有属性。都是两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用,即对象不能调用私有方法和私有属性。

class My:
    def test(self):
        self.__password = 123456
    def say(self):
        print('password',self.__password)
    def __set_password(self):
        self.__password = 7890
    def update(self):
        self.__set_password()

m = My()
m.test()

老师的笔记

面向对象编程:
    类
        一个种类、一个模型
    实例、实例化、对象
        实例、对象:
            根据模型制作出来的东西。
        实例化:
            就是做东西的这个过程。
    私有
        方法
            类里面的函数
        属性
            类里面的变量
        构造函数
            类在实例化的时候会自动执行的一个函数
        析构函数
            实例在销毁的时候自动执行的函数
        self
            代表的本类对象。
        类变量:
            就在直接在类下面定义的变量,没有加self的,每个实例都可以用
        类方法:
            1、不需要实例化就可以调用
            2、它可以使用类变量
            3、调用其他的类方法。
            4、它不可以使用实例方法、实例变量
            如果类里面的这个方法,它并没有使用到其他的实例变量、或者其他实例方法,那么就给他定义成类方法
        静态方法:
            1、不需要实例化就可以调用的
            2、它就是一个定义在类里面的普通函数,不能使用实例变量、实例方法、不能使用类变量、类方法。
        属性方法:
            看起来像变量的一个方法。

        实例变量:
            self.xxx = xxx
            加了self的变量才是实例变量,必须得实例化之后才可以使用

        实例方法:
            需要穿self的方法,都是实例方法,必须得实例化之后才可以使用
            实例方法里面可以随便通过self来调用实例方法,类方法,静态方法,类变量。
        私有:
            变量、函数,前面加两个下划线就代表是一个私有的,只能在类里面用。
        继承:

今天就到这,关于实例方法和类方法还需要再琢磨一下。类方法应该就是类中普通的方法,和静态方法的区别是静态方法不能使用类变量和类方法,就是类中普通的函数。实例方法是啥呢?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值