一、概念

1.注重对象和职责,不同的对象承担不同的职责。

2.适合应对复杂的需求变化,是专门应对复杂项目开发。

二、类和对象

类:是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用,特征也被称为属性,行为也被称为方法。类相当于是一个模块,是负责创建具体对象的。

对象:对象是由类创建出来的一个具体存在,可以直接使用。

两者之间的关系:

类是模块,对象是根据类这个模块创建出来的,应该先有类,再有对象。类只有一个,而对象可以有多个。类中定义了什么属性和方法,对象中就有什么属性和方法。

三、内置函数

方法

作用

__new__

创建对象时,会被自动调用

__init__

对象被初始化时,会被自动调用

__del__

对象被从内存中销毁前,会被自动调用

__str__

返回对象的描述信息

四、类的操作

创建类语法:

class 类名:

    def 方法1(self, 参数列表):
        pass
    
    def 方法2(self, 参数列表):
        pass

类名的命名规则要符合大驼峰命名。

创建对象语法:

对象变量 = 类名()

代码示例如下:

# 创建类
class Dog:
    def eat(self):
        print('吃')

    def sleep(self):
        print('睡')


# 创建对象
wancai = Dog()
wancai.eat()
wancai.sleep()

输出:

吃
睡

创建对象后,wancai这个变量记录的是对象在内存中的地址,也就是引用了新建的对象。

self参数:

由哪一个对象调用,方法内的self就是哪一个对象的引用,表示当前调用方法的对象自己,在方法内部可以通过self.访问对象的属性也可以通过self.调用其他对象方法。

代码示例如下:

# 创建类
class Dog:

    def eat(self):
        print('吃')
        # 调用对象中里其他方法
        self.sleep()

    def sleep(self):
        print('睡')


# 创建对象
wancai = Dog()
wancai.eat()
#wancai.sleep()

输出:

吃
睡

初始化方法:

当使用类名()创建对象时,会自动执行以下操作:

1.为对象在内存中分配空间-创建对象

2.为对象的属性设置初始值-初始化方法(init)

代码示例如下:

# 创建类
class Dog:
    name = ''

    def __init__(self):
        print('初始化方法')
        self.name = 'aa'
        
    def eat(self):
        print('%s吃骨头' % (self.name))
        # 调用对象中里其他方法
        self.sleep()

    def sleep(self):
        print('睡')


# 创建对象
wancai = Dog()
wancai.eat()

输出:

初始化方法
aa吃骨头
睡

创建对象的时候回调用__init__方法,在这个方法里面我们可以进行初始化的操作。

初始化同时设置初始化值:

可以对__init__方法进行改造,加上自定义参数

代码示例如下:

# 创建类
class Dog:
    name = ''

    def __init__(self, name):
        print('初始化方法')
        self.name = name

    def eat(self):
        print('%s吃骨头' % (self.name))
        # 调用对象中里其他方法
        self.sleep()

    def sleep(self):
        print('睡')


# 创建对象
wancai = Dog('wancai')
wancai.eat()

输出:

初始化方法
wancai吃骨头
睡

__del__方法:

当一个对象呗销毁前,会自动调用__del__方法。我们可以在对象被销毁前处理一些事情,就可以在__del__方法加上自己的逻辑。

代码示例如下:

# 创建类
class Dog:
    name = ''

    def __init__(self, name):
        print('初始化方法')
        self.name = name

    def __del__(self):
        print('对象被销毁处理一些操作..')

    def eat(self):
        print('%s吃骨头' % (self.name))
        # 调用对象中里其他方法
        self.sleep()

    def sleep(self):
        print('睡')


# 创建对象
wancai = Dog('wancai')
wancai.eat()

# 销毁对象
del wancai

str方法:

如果我们希望使用print输出对象变量时,能够打印自定义内容,我们可以利用__str__这个方法实现我们的自定义输出。

代码示例如下:

# coding=utf-8
# 创建类
class Dog:
    name = ''

    def __init__(self, name):
        print('初始化方法')
        self.name = name

    def __str__(self):
        return '我是:%s' % self.name

    def eat(self):
        print('%s吃骨头' % (self.name))
        # 调用对象中里其他方法
        self.sleep()

    def sleep(self):
        print('睡')


# 创建对象
wancai = Dog('wancai')
wancai.eat()

# 打印对象 调用__str__方法
print(wancai)

输出:

初始化方法
wancai吃骨头
睡
我是:wancai