python面向对象——类(上)

1. 面向对象简介

  • Python是一门面向对象的编程语言,所谓的面向对象就是语言中的所有操作都是通过对象来进行的。
  • 面向过程:
    。面向过程指将程序分解为一个一个步骤,并按照每个步骤来一一实现。
  • 面向过程的缺点
    。这中编写方式往往只适用于一个功能,很难实现多个功能,代码的复用性低
  • 面向过程的优点
    。这种编程方式符合人类的思维,编写起来较容易。如:妈妈煮饭
    1 . 需要先清洗电饭锅
    2 往锅中加米
    3 . 清洗米
    4 . 给电饭锅插上电
    5 . 静等米饭煮熟
  • 面向对象的编程语言,关注的是对象,而不是过程。如上述的例子,面向对象的编程语言只关注最后米饭是否煮熟
  • 面向对象的编程思想,将所有功能统一保存到对应的对象中,要使用某个功能,直接找到对应的对象即可
  • 这种编码方式比较容易阅读,并且易于维护,容易复用。但是编写的过程中不太符合常规的思维,编写相对麻烦
    在这里插入图片描述

2. 类(class)

  • 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。简单理解就相当于一张图纸,在程序汇总我们需要更具类来创建对象。

#语法
class 类名([父类]):
  pass

  • 类也是一个对象,类就是用来创建对象的对象
  • 可以向对象中添加变量,对象中的变量称之为属性 语法:对象.属性名 = 属性值
class MyClass():   #定义一个类
    pass

p1 = MyClass()    #类的实例化
p1.name = '刘亦菲'    #添加公共变量

3. 类的定义

  • 类和对象都是对现实生活中事物的抽象
  • 包含两部分:
    。1.数据(属性)
    。2.操作(方法)
  • 调用方法 对象.方法名()
  • 方法调用和函数调用的区别:
    1.如果是函数调用,调用时有几个形参,就会传递几个实参。
    2.如果是方法调用,默认传递一个参数,所以方法中至少得有一个形参
# 在python中,你想使用一个东西,你必须先创建一个这样的对象
# 自定义类  如:图纸  通过图纸创造出来的汽车  汽车就是通过图纸创建出来的实例对象
# 定义类的语法
# class 类名([父类]):
#     pass

class MyClass():   #定义类,给它命名为MyClass  类相当于图纸  类对象 只是用于存储的功能
    pass

mc = MyClass()   #创建实例对象(类的实例化)实例对象  实现效果的功能

#类对象 (存储属性、功能)    实例对象(实现效果的功能)
mc1 = MyClass()
print(id(mc),id(mc1))

#类可以创建多个实例,每个实例各不相同,这一些实例我们称呼为一类实例

#isinstance()  用来检测这个实例是否是这个类创建出来的
print(isinstance(mc,MyClass))
  • 在类代码块中,我们可以定义变量和函数

  • 变量会成为该类实例的公共属性,所有的该实例都可以通过 对象.属性名的形式访问

  • 函数会成为该类实例的公共方法,所有该类实例都可以通过 对象.方法名的形式访问

  • 类的使用

class Person():   #定义一个类
    name = '邓紫棋'   #属性

    def speak(self):   #方法 类中的函数不叫做函数了,叫做方法
        print('你好')

p1 = Person()    #类的实例化
print(p1.name)   #实列.属性   就可以获取到这个属性值
p1.speak()       #实例.方法

p1.name = '刘亦菲'   #更改类的属性的值
print(p1.name)

p2 = Person()
print(p2.name)

在类的代码中,我们可以定义变量和函数

  1. 定义在类中的变量会成为该类实例的公共属性,所有的实例都可以通过 “对象.属性名” 的形式来访问
  2. 定义在类中的函数会成为该类实例的公共方法,所有的实例都可以通过 “对象.方法名()” 的形式来访问

4. 参数self

4.1 属性和方法

  • 类中定义的属性和方法都是公共的,任何该类实例都可以访问
  • 属性和方法的查找流程
    • 当我们调用一个对象的属性时,解析器会现在当前的对象中寻找是否还有该属性,如果有,则直接返回当前的对象的属性值。如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值。如果没有就报错
  • 类对象和实例对象中都可以保存属性(方法)
    • 如果这个属性(方法)是所以的实例共享的,则应该将其保存到类对象中
    • 如果这个属性(方法)是摸个实例独有的。则应该保存到实例对象中
    • 一般情况下,属性保存到实例对象中 而方法需要保存到类对象中

4.2 self

  • self在定义时需要定义,但是在调用时会自动传入。
  • self的名字并不是规定死的,但是最好还是按照约定是用self
  • self总是指调用时的类的实例
class Presion():
    #name = '刘亦菲'

    #哪个对象调用类的speak方法,那个s就是这个对象,类里通常使用self
    def speak(s):
        print('你好,我是%s'%s.name)

    def run(self):   #self就等于任何调用这个方法的对象本身
        pass

p1 = Presion()
p1.name = '周慧敏'
p1.speak()

p2 = Presion()
p2.name = '刘亦菲'
p2.speak()

总结

本文为学习笔记,转载请标明出处,本文仅供交流学习,请勿用于非法途径,希望本文对大家有帮助。

仅是个人意见,如有不足之处或者侵权,请留言

posted @ 2021-03-29 10:45  wakeyo_J  阅读(83)  评论(0)    收藏  举报