python类用法(三)

简介: python类用法(三)

python类用法(三)

、类的多态性

多态性是面向对象编程的三大特性之一,它指的是不同的对象对同一消息做出不同的响应。在Python中,由于它是动态类型语言,多态性自然地被支持。

python复制代码

 

class Shape:

 

def area(self):

 

pass 

 

 

 

class Circle(Shape):

 

def __init__(self, radius):

 

self.radius = radius

 

 

 

def area(self):

 

return 3.14 * self.radius ** 2 

 

 

 

class Rectangle(Shape):

 

def __init__(self, width, height):

 

self.width = width

 

self.height = height

 

 

 

def area(self):

 

return self.width * self.height

 

 

 

def calculate_area(shape):

 

return shape.area() # 多态性体现在这里,无论是Circle还是Rectangle对象,都可以调用area方法

 

 

 

circle = Circle(5)

 

rectangle = Rectangle(4, 6)

 

print(calculate_area(circle)) # 输出圆的面积

 

print(calculate_area(rectangle)) # 输出矩形的面积

、元类与类的创建

元类(Metaclass)是创建类的“类”。在Python中,类本身也是对象,元类就是用来创建这些类对象的类。通常情况下,我们不需要直接操作元类,但在某些高级用法,如自动注册类、控制类的创建等场景中,元类非常有用。

python复制代码

 

class Meta(type):

 

def __init__(cls, name, bases, dct):

 

print(f"Creating class {name}")

 

super().__init__(name, bases, dct)

 

# 在这里可以对类进行额外操作,如注册、修改属性等

 

 

 

class MyClass(metaclass=Meta):

 

pass 

 

 

 

# 当MyClass被定义时,会触发Meta类的__init__方法,输出:Creating class MyClass

、属性装饰器

Python还提供了几个内置的属性装饰器,如@property@classmethod@staticmethod,它们用于改变方法的行为,使其表现得像数据属性、类方法或静态方法。

1. @property

将方法转换为只读属性。

python复制代码

 

class Circle:

 

def __init__(self, radius):

 

self._radius = radius

 

 

 

@property

 

def radius(self):

 

return self._radius

 

 

 

@radius.setter

 

def radius(self, value):

 

if value < 0:

 

raise ValueError("Radius cannot be negative")

 

self._radius = value

 

 

 

circle = Circle(5)

 

print(circle.radius) # 读取属性值

 

circle.radius = 10 # 设置属性值

2. @classmethod

将方法绑定到类而不是实例,不需要实例即可调用,且第一个参数约定为表示类本身的cls

python复制代码

 

class MyClass:

 

@classmethod

 

def class_method(cls):

 

print(f"This is a class method of {cls.__name__}")

 

 

 

MyClass.class_method() # 调用类方法

3. @staticmethod

将方法定义为静态方法,即方法既不与类关联也不与实例关联,只是放在类命名空间中的一个普通函数。

python复制代码

 

class MyClass:

 

@staticmethod

 

def static_method():

 

print("This is a static method")

 

 

 

MyClass.static_method() # 调用静态方法

 

 

目录
相关文章
|
24天前
|
索引 Python
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
15 1
|
24天前
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
18 2
|
28天前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
15 1
|
28天前
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
33 1
WK
|
27天前
|
Python
Python类命名
在Python编程中,类命名至关重要,影响代码的可读性和维护性。建议使用大写驼峰命名法(如Employee),确保名称简洁且具描述性,避免使用内置类型名及单字母或数字开头,遵循PEP 8风格指南,保持项目内命名风格一致。
WK
11 0
|
27天前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
16 0
|
28天前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
63 0
|
28天前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
61 0
|
28天前
|
计算机视觉 Python
Python中Pillow库的常见用法和代码示例
Pillow是Python中广泛使用的图像处理库,支持丰富的图像操作功能,包括但不限于打开、保存、缩放、裁剪、旋转、调色等。本文通过一系列示例介绍Pillow的基本用法,涵盖图像的加载与显示、尺寸调整、裁剪与旋转、亮度调整、格式转换、滤镜应用、图像合成及像素级操作等。首先需通过`pip install pillow`安装库,随后可通过导入`PIL.Image`等模块开始图像处理任务。无论是初学者还是进阶用户,都能从Pillow提供的强大功能中获益。
26 0
|
30天前
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
32 0

热门文章

最新文章