Python面试:类的特殊方法

简介: Python面试:类的特殊方法

1、call函数

class Foo():
    def __init__(self):
        print("Foo-init")
    def __call__(self):
        print("Foo-call")
f = Foo()
f()  # 重载了括号运算符
"""
Foo-init
Foo-call
"""

2、类装饰器

class Decorator():
    def __init__(self, func):
        print("Decorator-init")
        self.fun = func
    def __call__(self, args1, args2):
        print("Decorator-call")
        self.fun(args1, args2)
@Decorator
def add(a, b):
    print("a+b:", a+b)
# add(1, 2)
"""
Decorator-init
Decorator-call
a+b: 3
"""

3、new和init

class MyTuple(tuple):
    def __init__(self, seq):
        print("MyTuple-init")
        print("self:", self)
        # takes no parameters
        super(MyTuple, self).__init__()
    def __new__(cls, seq):
        print("MyTuple-new")
        # 过滤
        g = [i for i in seq if isinstance(i ,int)]
        # 返回对象:self
        return super(MyTuple, cls).__new__(cls, g)  
t = MyTuple([1, 2, "-1"])
print(type(t), t)
"""
MyTuple-new
MyTuple-init
self: (1, 2)
<class '__main__.MyTuple'> (1, 2)
"""

4、set,get,delete

# 描述符 : 允许你自定义在引用一个对象属性时应该完成的事情
# __set__:在设计属性的时候被调用
# __get__:在读取属性的时候被调用
# __delete__:在删除属性的时候被调用
class Descriptor():
    def __get__(self, instance, owner):
        print("get")
    def __set__(self, instance, value):
        print("set")
    def __delete__(self, instance):
        print("delete")
class A():
    x = Descriptor()
a = A()
a.x
a.x = 1
del a.x
"""
get
set
delete
"""

5、描述符实例:属性做类型检查

class Descriptor():
    def __get__(self, instance, owner):
        print("get")
    def __set__(self, instance, value):
        print("set")
    def __delete__(self, instance):
        print("delete")
class A():
    x = Descriptor()
a = A()
a.x
a.x = 1
del a.x
"""
get
set
delete
"""

参考:


面试Python如果你说出这几招,让你瞬间牛叉


相关文章
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
375 1
|
4月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
173 2
|
4月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
144 0
|
4月前
|
传感器 大数据 API
Python数字限制在指定范围内:方法与实践
在Python编程中,限制数字范围是常见需求,如游戏属性控制、金融计算和数据过滤等场景。本文介绍了五种主流方法:基础条件判断、数学运算、装饰器模式、类封装及NumPy数组处理,分别适用于不同复杂度和性能要求的场景。每种方法均有示例代码和适用情况说明,帮助开发者根据实际需求选择最优方案。
230 0
|
4月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
3月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
467 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
3月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
4月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
291 4
|
3月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
107 0
|
4月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
202 0

推荐镜像

更多