python语言基础(十一)面向对象编程(类、对象、self参数、init方法、str方法、私有属性、私有方法)

面向对象编程(一)

从上至下的编程方式、函数等都成为面向过程的编程方式。
面向对象编程:Object Oriented Programming,简称OOP,是一种程序的设计思想,能把对象归类的时候就用面向对象编程,python是面向对象编程语言。
需要注意的是能够使用面向对象编程思想实现的程序,也都能通过面向过程完成,要看哪种思想更适合当前开发需求。
面向过程与面向对象区别:
面向过程:根据业务逻辑从上到下写代码,注重每一步的过程。
面向对象:将数据与函数绑定到一起,进行封装。减少重复代码的重写过程
在下五子棋的整个过程中可以有两种不同的思路来实现:
面向过程
按步骤来看:
(1)开始游戏,(2)黑子先走,(3)绘制画面,(4)判断输赢,(5)轮到白子,(6)绘制画面,(7)判断输赢,(8)返回步骤(2),(9)输出最后结果
面向对象
按组成模块来看:
(1)黑白双方模块,(2)棋盘模块,(3)规则模块
前者侧重于游戏步骤的设计,对应于编程中的面向过程思想;后者着重于分层,有模块化设计理念,对应于编程中的面向对象思想。可以很明显地看出:面向对象是以功能来划分问题,而不是步骤。

面向对象概念及术语

类是抽象的概念,仅仅是模板。用来描述具有相同属性和方法的对象的集合。比如:"人"是一个类,不同的姓名的人组成。

对象

某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。 比如:每个人就是一个对象。

类与对象的关系

班级里的每一位同学,都会有姓名、年龄的属性,在教室的行为都是在学习。可以把所有学生归为学生类,每一位学生都是类里实实在在的对象。这就是对象归类的过程。
比如汽车、水果是类,奔驰大G550、红富士是对象。

类的构成

类由3个部分构成
*1. 类的名称:类名
*2 类的属性:一组数据(年龄、性别等属性)
*3 类的方法(行为):学习python的动作也被称为行为,允许对类进行操作的方法

类的定义

Python 使用 class 关键字来定义类,其基本结构如下:

class MyClass:
    pass

注意:类名通常采用驼峰式命名方式,尽量让字面意思体现出类的作用。

创建对象

python 中,可以根据已经定义的类去创建出一个个对象

obj_name = MyClass()

在上面代码中,MyClass()就是实例化的过程,将实例化后创建出来的对象赋值给obj_name,obj_name就是对象。
小练习
*1 创建类:学生类
*2 创建对象:张三
*3 在类中定义方法输出:张三学习Python

class LogStudents:      # 定义类,类名为驼峰命名法
    
    def study_python(self):     # 定义类中的方法
        print('张三学python')

zs = LogStudents()      # 创建对象赋值给zs,也可理解为创建zs这个对象(实例),是实例化的过程。
zs.study_python()       # 通过 对象.方法名() 调用类中的方法
self 参数

当在类中定义方法时,会发现系统帮我们自动创建了self 参数,并且在调用对象的该方法时,也无需传入 self 参数。那这个 self 是什么?
实际上,我们需要明确 self 的两个概念
*1 self 本身是 形参
*2 self 就是 对象本身

class LogicStudent():
    def test_one(self):
        print(self)

N_stu = LogicStudent()
print(N_stu)        # <__main__.LogicStudent object at 0x0000026A16B89828>
N_stu.test_one()    # <__main__.LogicStudent object at 0x0000026A16B89828>
'''体现了self 与 N_stu 是同一个对象'''

# 再创建一个对象,self 与 M_stu 也是同一个对象
M_stu = LogicStudent()
print(M_stu)        # <__main__.LogicStudent object at 0x000002D27D657588>
M_stu.test_one()    # <__main__.LogicStudent object at 0x000002D27D657588>
'''可以得到self就是对象本身,创建的对象是谁,self就是谁'''

如果创建一个对象,就用对象的名称去访问的话,会很麻烦。可以用 self. 直接调用,代表的是通过谁来调用,就用谁来传。根据对象的不同来引用不同对象的属性。

class LogicStudent():
    def stu_info(self):
        # print(N_stu.name, N_stu.age)
        print(M_stu.name, M_stu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值