自定义对象

1. 对象(python都有,你有没有)

多态

这大致意味着即便你不知道变量指向的是哪种对象,也能够对其执行操作,且操作的行为将随对象所属的类型(类)而异。

封装

封装(encapsulation)指的是向外部隐藏不必要的细节。

2. 类

每个对象都属于特定的类,并被称为该类的实例。例如,如果你在窗外看到一只鸟,这只鸟就是“鸟类”的一个实例。鸟类是一个非常通用(抽象)的类。

创建自定义类

被调用时会被第一个传入的参数就是self

class Person:

def set_name(self, name):

self.name = name

def get_name(self):

return self.name

def greet(self):

print("Hello, world! I'm {}.".format(self.name))

类的命名空间

下面两条语句大致等价:

def foo(x): return x * x

foo = lambda x: x * x

在 class 语句中定义的代码都是在一个特殊的命名空间(类的命名空间)内执行的,而类的所有成员都可访问这个命名空间。

继承

要确定一个类是否是另一个类的子类,可使用内置方法 issubclass 。

>>> issubclass(SPAMFilter, Filter)

True

>>> issubclass(Filter, SPAMFilter)

False

抽象基类

Python通过引入模块 abc 提供了官方解决方案。这个模块为所谓的抽象基类提供了支持。一般而言,抽象类是不能(至少是不应该)实例化的类,其职责是定义子类应实

现的一组抽象方法。下面是一个简单的示例:

from abc import ABC, abstractmethod

class Talker(ABC):

@abstractmethod #

def talk(self):

pass

形如 @this 的东西被称为装饰器,其用法将在第9章详细介绍。

Logo

GitCode AI社区是一款由 GitCode 团队打造的智能助手,AI大模型社区、提供国内外头部大模型及数据集服务。

更多推荐