python高阶1(面向对象与多线程)

面向对象

类(class):描述具有相同属性和行为的对象的集合。比如学生类(学号、姓名、班级、学习)

对象(object):通过类定义的数据结构的实例,是对类的具体实现

属性:描述类的静态特征

        类属性:每一个对象都有并且值相同,比如学生的国籍

        实例属性:每一个对象都具有,但是值可能不同,比如学生姓名、年龄等。

方法:用于描述类的动态行为

        类方法:通过装饰器@classmethod声明,常通过类调用,一般用于修改类属性的值

        实例方法:类中最常用的方法,常通过对象调用。

        静态方法:通过装饰器@staticmethod声明,常通过类调用,一般用于和类本身无关的方法。

声明:

class 类名[(父类1,父类2,...)]:

        语句1

        ......

        语句n

类名:符合标识符命名规范,通常每个单词首字母大写

例:声明一个学生类

        属性:学号、姓名、年龄、国籍、班级

        方法:学习、吃饭、睡觉

         

 对象的声明(实例化)

         语法:对象名=类名([实参1,实参2,....])

 例:实例化Student类

 内置方法

        __new__(),new方法,用于创建对象,在实例化时自动调用

        __init__(),构造方法,初始化对象,在实例化时自动调用

        __del__(),析构方法,销毁对象,在对象声明周期结束时自动调用

例:

例:

 

 

 对象组合

用于描述类与类之间的关系,多个类之间存在依赖关系,需要在A类中调用B的属性或方法。

方式

1.在A类的实例方法中传入B类的对象,通过该对象调用B类中的属性和方法(A类和B类相互依赖)

2.在A类的构造方法中传入B类的对象,通过该对象调用B类中的属性和方法(A类依赖于B类)

 

面向对象的三大特性:

1.封装:

        私有化:在属性或者方法名前面加2条下划线,此时属性或者方法就变为私有的,只能在当前类的内部访问,但提供与外界的接口进行数据的交换。

2.继承

作用:提高代码重用性,降低代码冗余

基本概念:

        子类:继承其他类的类;可以有多个父类;可以继承父类所有非私有的属性和方法。

        父类:也叫做基类、超类,被别的类继承的类

        重写:子类继承了父类的方法,在子类中对这个方法重新实现该方法

例1:继承

例2:父类控制子类必须重写方法

单例模式:在程序运行期间保证类的实例只有1个

例3

 Ture

无论实例化多少次,占据的空间都是同一个。

3.多态

多线程

线程:进程内部进行CPU调度的基本单位,一个进程中至少存在一个线程

模块:threading

创建线程:Thread(target=func[args=(value1,value2,...)])

        target,指定线程需要执行的任务(通常是函数名或者方法名,不要加括号)

        args,指定线程执行的任务需要传入的实参,以元组的形式传入

启动线程:start()方法

包括一个主线程,两个子线程,属于下列三种中的第一种。

有三种情况

1.主线程在子线程结束前先结束

2.主线程结束,子线程跟随主线程结束而结束

3.主线程在子线程结束后结束

线程守护(第二种情况):

作用:子线程跟随主线程结束而结束

方法:satDaemon(True),必须在线程启动前设置

线程阻塞(第三种情况):

作用:主线程在子线程结束后结束

方法:join(),需要在线程启动后设置

线程锁

作用:解决子线程共享全局变量时出现的数据冲突问题,从而确保数据的安全性和准确性

缺点:降低程序运行效率

方法一:

使用步骤

1.创建锁:

        lock=threading.lock()

2.在编辑全局变量之前获取锁,锁定全局变量只能由当前子线程编辑:

        lock.acquire()

3.编辑完成后,释放锁(一定记得释放锁)

        lock.release()

方法二:with lock()      实现自动释放锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值