Python - 定义对象返回值

标签 python class object types return

我正在尝试在 Python 中实现一个非常基本的类 Java 维度类:

class Dimension(object):
    def __init__(self, width, height):
        self.__width = width
        self.__height = height

    @property
    def width(self):
        return self.__width
    @property
    def height(self):
        return self.__height
d = Dimension(800, 400)

print d.width
print d.height

这很好用:d.width 返回一个 int=800,d.height 返回一个 int=400。 但是我该如何定义 d 应该返回一个 tuple=(800,400) 而不是 <__main__.Dimension object at 0xXXXXXXXX>

是否有类似于__repr__的内置类函数?为了它? 如何定义自定义类的返回值? 还是我必须实现一种新类型?

谢谢

最佳答案

如果你想让你的类表现得像一个元组,继承自元组:

class Dimension(tuple):

然后覆盖__new__方法来操作创建:

def __new__(cls, width, height):
    tuple.__new__(cls, (width, height))

留给你:

class Dimension(tuple):

    def __new__(cls, width, height):
        return tuple.__new__(cls, (width, height)) # create tuple with 2 items

    def __init__(self, *args):
        self.width = args[0] # width is the first argument passed
        self.height = args[1] # height is the next

>>> d = Dimension(800, 400)
>>> print(d)
(800, 400)
>>> print(d.width)
800
>>> print(d.height)
400

关于Python - 定义对象返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41700266/

相关文章:

python - Python 中的不可变对象(immutable对象)可能具有弱引用

java - 自动编译多个java包

arrays - 如何声明将与嵌套对象一起使用的模型?

javascript - 使用jquery根据span标签中的文本写入ID

Javascript:创建私有(private)对象属性的语法

objective-c - Objective-C 对象是按值传递还是按引用传递?

python - 添加具有元组长度(项目数)的列

python - 从文本文件创建嵌套字典

python - 检索 flickr 收藏夹

c++ - 需要使用 Book* head 变量重载运算符但不起作用