python 0基础 第十三节 面向对象编程和类

一.面向对象编程

1.概念

  1. 面向对象(object-oriented ;简称: OO) 至今还没有统一的概念 我这里把它定义为: 按人们 认识客观世界的系统思维方式,采用基于对象(实体) 的概念建立模型,模拟客观世界分析、设 计、实现软件的办法。程序是由数据和功能组合而成的对象构建起来的
  2. 面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。
    这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,
  3. 以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。
  4. 面向过程:根据业务逻辑从上到下写代码,
    面向对象:对数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程

二.类 class

1.基本概念

类是对象的抽象化,类是一群具有相同特征或行为的事物的统称。

2.定义

class 类名():
	...

1.命名规则–驼峰命名法(首字母大写)

class Student():
	pass

2.类的实例化

class Student():
	pass
XiaoMing = Student() #小明是student的一个实例

3.类的属性

  1. 类可以看作是独立存放(属性及方法)的空间。
  2. 类就像人拥有其独特的特性(属性)以及行动(方法)
  3. 实例对象可以获得类中所有的属性及方法

在这里插入图片描述
在查找属性时,会优先在实例中查找,然后在类中查找

4.类与实例之间的联系

  1. 类时一个事物的抽像,不是真实存在的,描绘了事物的共性
  2. 2.实例:某个事物的具体个体,是该类事物的具体表现,真实存在。
  3. 实例也是存放变量的空间,不同实例之间互不可见
    如图示,stu1 没有num属性,stu2 有num属性。stu1 无法访问num属性,故报错
    实例与实例之间属性不互通
    在这里插入图片描述

5.私有属性

  1. 概念
    属性前加’_‘一个下划线,外部可以直接访问
    属性前加’__'两个下划线,外部不可以直接访问
  2. 这是一种规范,并非限制。定义在类中的私有属性也可以被子类继承
  3. 举例:
    在这里插入图片描述
    当在实例外部调用私有属性__name时报错
  4. 属性的修改与保护
    _ 和 __这是一种规范(约定), 没有真正的限制作用
    修改:
  • 对象名.属性名 = 数据----直接修改

  • 对象名.方法名()----间接修改

    保护:为了更好的保存属性安全,即不能随意修改

  • 将属性定义为私有属性

  • 添加一个可以调用的方法,供调用

class Student():
  # 初始化__init__   self--实例本身
  def __init__(self, name, age):
      self.__name = name
      self.age = age

  # 类中定义方法
  def Information(self):
      print('{}是{}岁'.format(self.__name, self.age))

  def SetName(self, newName):
      self.__name = newName

  def GetName(self):
      return self.__name


stu1 = Student('小明', 18)
print(stu1.GetName())
stu1.SetName('小红')
print(stu1.GetName())
print(stu1.age)

输出结果:
在这里插入图片描述

通过Setname和Getname方法来访问私有属性__name,而共有属性age可以直接在实例外访问

6.方法:

  1. 类属性就是针对 类对象定义的属性
  • 使用 赋值语句class 关键字下方可以定义 类属性
  • 类属性 用于记录 与这个类相关 的特征
  1. 类方法就是针对 类对象定义的方法
  • 类方法 内部可以直接访问 类属性 或者调用其他的 类方法
class Student():
    # 初始化__init__   self--实例本身
    def __init__(self, name, age):
        self.__name = name
        self.age = age

    # 类中定义方法
    def Information(self):
        print('调用Information')
        print('{}是{}岁'.format(self.__name, self.age))

    def SetName(self, newName):
        self.__name = newName

    def GetName(self):
        return self.__name

    def func(self):
        print('调用func')
        self.Information()


stu1 = Student('小明', 18)
stu1.func()
stu1.Information()

运行结果:
在这里插入图片描述
可以通过类方法调用类方法或者类属性

  • ’实例方法’的调用过程与self:
  1. 通常将默认会传入的那个参数命名为self
    用来表示调用这个方法的实例对象本身
  2. 方法总是定义在类中,但是却叫实例方法,因为它表示该类所有实例共有的行为
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值