在Python中,Range()似乎只接受整数作为参数.如何让range()接受自定义类作为参数?

我已经定义了这样一个类:

class MyInteger:
    def __init__(self, a:int):
        self._a = a
    def __int__(self):
        return self._a

我试过了:

n = MyInteger(5)
for i in range(n):
    print(i)

它总是导致‘对象不能被解释为整数’,不管我是否定义了__int__.,有什么方法可以解决这个问题吗?

不能将range(n)更改为range(int(n))range(n.get_int()).

推荐答案

实现__index__以允许将您的类实例解释为int

class MyInteger:

    def __init__(self, a:int):
        self._a = a

    def __index__(self):
        return self._a
n = MyInteger(5)
for i in range(n):
    print(i)

Python相关问答推荐

Tkinter滑动条标签.我不确定如何删除滑动块标签或更改其文本

DuckDB将蜂巢分区插入拼花文件

我从带有langchain的mongoDB中的vector serch获得一个空数组

DataFrame groupby函数从列返回数组而不是值

无法通过python-jira访问jira工作日志(log)中的 comments

如何创建一个缓冲区周围的一行与manim?

转换为浮点,pandas字符串列,混合千和十进制分隔符

从Windows Python脚本在WSL上运行Linux应用程序

判断solve_ivp中的事件

Geopandas未返回正确的缓冲区(单位:米)

将标签移动到matplotlib饼图中楔形块的开始处

在方法中设置属性值时,如何处理语句不可达[Unreacable]";的问题?

如何获取Python synsets列表的第一个内容?

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

如何将一组组合框重置回无 Select tkinter?

如何在GEKKO中使用复共轭物

有没有办法让Re.Sub报告它所做的每一次替换?

如何设置nan值为numpy数组多条件

Pandas:将值从一列移动到适当的列

将数字数组添加到Pandas DataFrame的单元格依赖于初始化