美文网首页
P 面向对象 | 面向对象

P 面向对象 | 面向对象

作者: Ricsy | 来源:发表于2019-10-04 01:07 被阅读0次


一、面向对象


1.1 面向过程与面向对象

1.1.1 面向过程

怎么做

1.1.2 面向对象

谁来做
应对复杂的项目,提供固定的套路


1.2 面向对象基本概念

1.2.1 类与对象的概念

Python中对象几乎无处不在

名称 说明
类是一群具有相同特征或者行为的事物的一个统称

三要素:

类名(满足大驼峰命名法)、属性(事物特征)和方法(事物行为)

1. 抽象的,不能直接使用

2. 负责创建对象
对象 对象是由类创建出来的一个具体的存在

1. 可以直接使用

2. 由哪一个类创建的对象就具有哪一个类中定义的属性和方法

eg:

变量、数据、函数都是对象
  • 先有类,再有对象
    类——图纸
    对象——图纸制造出来的飞机

1.2.2 类与对象的关系

  • 类是模板,对象是根据类这个模板创建出来的
    先有类,再有对象
  • 类只有一个,对象可以有很多个
  • 不同对象之间的属性可能会各不相同
  • 类中定义了什么属性和方法,对象就有什么属性和方法,不可能多,也不可能少

1.3 定义类

1.3.1 定义一个只含有方法的类

格式:

class 类名:
    def 方法名1(self, 参数列表):
        pass
    
    def 方法名2(self, 参数列表):
        pass
    
    ...
    
    def 方法名n(self, 参数列表):
        pass
  • 类名符合大驼峰命名法
  • 方法名使用下划线
  • 方法中的第一个参数必须是self

1.3.2 创建对象

格式:

对象名 = 类名()

1.4 类的属性与self

哪一个对象调用的方法,self就是哪一个对象的引用

1.4.1 在类的外部给对象增加属性不推荐

对象名.属性名 = 'xxx'

  • 程序在运行时,没有找到属性就会报错

eg:

class Cat:
    def test_001(self):
        print("Hello")


cat = Cat()
cat.name = '懒猫'
print(cat)

1.4.2 使用self在类的方法内部输出属性

eg:

class Cat:
    def test_001(self):
        print("我是%s" % self.name)


cat = Cat()
cat.name = '懒猫'
cat.test_001()
print(cat)


1.5 在类的初始化方法内部定义属性

使用类名创建对象时,Python解释器会自动执行以下操作:

  1. 为对象在内存中分配空间——创建对象
  2. 为对象的属性设置初始值——初始化方法
    __init__()
    __init__()专门用来定义一个类有哪些属性的方法

eg:

  • 初始化时写死属性
class Cat:
    def __init__(self):
        self.name = '懒猫'

    def test_001(self):
        print("我是%s" % self.name)


cat = Cat()
cat.test_001()
print(cat.name)
  • 初始化时设置属性推荐
class Cat:
    def __init__(self, name):
        self.name = name

    def test_001(self):
        print("我是%s" % self.name)


cat = Cat('懒猫')
cat.test_001()
print(cat.name)


1.6 内置方法

提示:

对象生命周期 描述
开始 一个对象从类名()创建,生命周期开始
结束 一个对象的__del__方法一旦被调用,生命周期结束
  • 在对象生命周期内,可以访问对象的属性或让对象调用方法
  • __del__方法
    对象被从内存中销毁前,会被自动调用

eg:

  • 程序最后自动调用__del__方法
class Cat:
    def __init__(self, name):
        self.name = name
        print("%s 我来了" % self.name)

    def __del__(self):
        print("%s 我去了" % self.name)

    def test_001(self):
        print("我是%s" % self.name)


cat = Cat('懒猫')
cat.test_001()
print(cat.name)
print("-"*50)

结果:

  • 直接删除一个对象并调用__del__方法
    del
class Cat:
    def __init__(self, name):
        self.name = name
        print("%s 我来了" % self.name)

    def __del__(self):
        print("%s 我去了" % self.name)

    def test_001(self):
        print("我是%s" % self.name)


cat = Cat('懒猫')
cat.test_001()
print(cat.name)
del cat
print("-"*50)

结果:

  • __str__方法
    返回对象的描述信息,print函数输出使用(必须返回一个字符串
    用于自定义对象变量的输出内容
  • python中,使用print()输出对象变量,默认会输出对象引用的类名及创建的内存地址

eg:

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


cat = Cat('懒猫')
print(cat)
print("-"*50)

结果:


更新中......


相关文章

网友评论

      本文标题:P 面向对象 | 面向对象

      本文链接:https://www.haomeiwen.com/subject/zhjjpctx.html