Python语言程序设计-面向对象基础

95 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情

src=http___i.cqdj.cc_forum_201307_27_160601dupc4j8gucap6mld.gif&refer=http___i.cqdj.gif

一、什么是面向对象编程

为了让编程更加清晰,把程序中的功能进⾏模块化划分,每个模块提供特定的功能,⽽且 每个模块都是孤⽴的,这种模块化编程提供了⾮常⼤的多样性,⼤⼤增加了重⽤代码的机 会。
⾯向对象编程也叫做OOP编程 简单来说⾯向对象编程就是结构化编程,对程序中的变量结构划分,让编程更清晰。

二、面向函数和面向对象编程方式的区别

面向函数:

  1. 把完成某⼀个需求的所有步骤从头到尾逐步实现;
  2. 根据开发需求,将某些功能独⽴的代码封装成⼀个⼜⼀个函数;
  3. 最后完成的代码,就是顺序地调⽤不同的函数。

面对对象:

相⽐较函数,⾯向对象是更⼤的封装,根据职责在⼀个对象中封装多个⽅法

  1. 在完成某⼀个需求前,首先确定职责—— 要做的事情(⽅法) ;
  2. 根据职责确定不同的对象,在对象内部封装不同的⽅法;
  3. 最后完成的代码,就是顺序地让不同的对象调⽤不同的⽅法。

三、类和对象的概念

:类是对⼀群具有相同特征或者⾏为的事物的⼀个统称,是抽象的,不能直接 使⽤。

  • 特征被称为属性
  • 行为被称为方法
  • 通俗来说类就相当于制造飞机时的图纸,是⼀个模板

对象:对象是由类创建出来的⼀个具体存在,可以直接使用。 由哪⼀个类创建出来的对象,就拥有在哪⼀个类中定义的,就像用图纸制造的飞机一样

四、基础语法

class 类名:
    def ⽅法1(self, 参数列表):
        pass
    def ⽅法2(self, 参数列表):
        pass
class 关键字用于创建一个类,方法和函数定义基本一致,区别在于方法第一个参数必须是self

练习案例:请写一个小猫类cat 属性:name(姓名) 方法:eat(吃)、drink(喝)

代码:

class cat:
    def set_name(self, name):
        self.name = name
    def eat(self):
        print("汤姆爱吃鱼")
    def drink(self):
        print("汤姆爱喝水")

方法中的self 参数

  • 在类封装的⽅法内部, self 就表示调用方法的对象自己
  • 调用方法时,不需要传递self 参数;
  • 在方法内部可以通过self. 调.对象的.法;
  • 在类的外部,通过对象名. 访问对象的属性和方法
  • 在方法内部可以通过self. 访问对象的属性;
    • 通过在方法内部使用self.属性名= 值,为类添加属性

五、面向对象基础------__del__方法

  • __del__方式只能有一个参数self;
  • 当对象在内存中被销毁的时候,__del__方法被系统自动调用;
  • 当使⽤类名() 创建对象时,为对象分配完空间后,⾃动调⽤__init__ ⽅法;
  • 当⼀个对象被从内存中销毁前,会⾃动调⽤__del__ ⽅法;
  • ⼀个对象的__del__ ⽅法⼀旦被调⽤,对象的生命周期结束。

代码说明

# 定义cat 类
class cat:
    def __init__(self, name = "猫"):
        self.name = name
        print("%s 的带有参数的初始化方法" % self.name)
    def __del__(self):
        print("%s 被销毁了" % self.name)
    def eat(self):
        print("%s 爱吃鱼" % self.name)
    def drink(self):
        print("%s 爱喝水" % self.name)
lazy_cat = cat()
  • 在函数内定义的变量,函数执行完毕,变量就被销毁了;
  • 在函数外部定义的变量,程序执行完毕,变量就被销毁了;
  • 可以通过del 关键字,显式的销毁一个变量。

六、面向对象基础------—__ str__ 方法

说明: 在Python 中,使⽤print 输出对象变量,默认情况下,会输出这个变量引 ⽤的对象是由哪⼀个类创建的对象,以及在内存中的地址(⼗六进制表示),如果在开发中,希望使⽤print 输出对象变量时,能够打印⾃定义的内容, 就可以利⽤__str__ 这个内置⽅法了。

注意:__ str__ ⽅法必须返回⼀个字符串

代码案例演练:

# 定义cat 类
class cat:
    def __init__(self, name = "猫"):
        self.name = name
        print("%s 的带有参数的初始化方法" % self.name)
    def __del__(self):
        print("%s 被销毁了" % self.name)
    def __str__(self):
        return "我是一只%s" % self.name
    def eat(self):
        print("%s 爱吃鱼" % self.name)
    def drink(self):
        print("%s 爱喝水" % self.name)
lazy_cat = cat('aaaa')
# 这个时候print 将显示__str__函数返回的字符串
print(lazy_cat)

我是爱分享的小羊,每天分享一点点!