四时宝库

程序员的知识宝库

python笔记26:面向对象与类的基本概念

主要内容:

  • 小目标:掌握面向对象
  • 主要内容:面向对象基本概念,类定义,属性

如果看完这篇文章,你还是弄不面向对象与类基本语法,

你来找我,我保证不打你,我给你发100的大红包。

面向对象的好处,后面通过案例来体会

1 基本概念:

  • 面向对象: 相对于面向过程,面向对象把相关的数据和方法组织为一个整体来看待;
  • 把整个需求按照特点、功能划分,将这些存在共性的部分封装成类,创建对象。
  • 面向对象相关知识点:抽象,封装,继承,多态;
  • 类:具有相同属性与行为的对象的集合体,是一个抽象的概念;
  • 对象:类的一个实例,具体的存在对象;

一个例子:

人是一个抽象的概念,一个类,它是所有人的一个抽象概念,

小明是一个人的对象,有具体属性(姓名,性别等)与行为(吃饭,睡觉等)

2. python类的定义

类主要有两部分组成:

  1. 数据:对应类中属性
  2. 行为:对应类中方法

2.1 类的定义

基本语法:

class 类名:
    pass

说明

class :关键字

类名:类的名称

2.2 定义一个类,并创建对象

class Test:
    pass
#创建对象
obj = Test()
print(type(obj))

结果:class 'main.Test'

obj=Test()的这个过程我们成为实例化,创建Test的具体对象。

对象可以访问类中方法与属性。

2.3 属性

两个基本概念:

名空间与作用域:类与对象会引入命名空间与作用域;

对象属性与方法查找顺序:对象>类>全局>build-in;

属性访问:类名.属性,或者:对象.属性;

一个例子:

class Test:
    level = 1
obj = Test()
print('class Test.level=', Test.level)
print('object obj.level=', obj.level)

定义一个Test类,并增加一个level属性;

实例化一个Test()对象;

通过类与实例去访问属性level;

结果:

class Test.level= 1
object obj.level= 1

分析:

leve是类Test中的属性,所以:level=1;

obj是Test对象,其level的属性来自于类Test的level;

2.4 类属性与实例属性之间关系

两个实验, 实验1:修改Test类中的level值,观察obj的level值;

Test.level = 2
print('class Test.level=', Test.level)
print('object obj.level=', obj.level)

结果:

class Test.level= 2
object obj.level= 2

分析:

Test类中的level发生变化,obj对象中的level也随之变化;

说明:当前场景下,obj访问的level是Test类中的level属性;

实验2:修改obj对象中的level值,观察Test类中的level值;

Test.level = 2
obj.level = 3
print('class Test.level=', Test.level)
print('object obj.level=', obj.level)

结果:

class Test.level= 2
object obj.level= 3

分析:

Test类中的level=2,同时obj对象增加level=3;

再次访问Test类与obj对象中的level,两个值不同;

对象中的属性查找优先级:对象命名空间>类命名空间;

obj对象的level属性值为3, Test类中的属性值为2;

再来看一个例子:

print(obj.t)

结果:异常;

AttributeError: 'Test' object has no attribute 't'

类与对象中没有t这个属性,所以错误。

总结

面向对象是一个比较重要点,这节我们强调基本概念:

什么是类,对象;

类与对象之间关系及命名空间与作用域;

python中创建类与对象方式;

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接