是否可以为python中的类设置默认方法?

时间:2019-04-09 23:25:16

标签: python class methods

假设您在python中有一个类。我们将其称为C。并假设您在脚本中的某个位置或以交互方式创建了它的实例:c=C()

在类中是否可以有一个“默认”方法,以便当您引用实例时,该默认方法会被调用?

class C(object):
    def __init__(self,x,y):
        self.x=x
        self.y=y
    def method0(self):
        return 0
    def method1(self):
        return 1
    def ...
        ...
    def default(self):
        return "Nothing to see here, move along"

以此类推。

现在,我以交互方式创建该类的实例,并引用它:

>>> c=C(3,4)
>>> c
<__main__.C object at 0x6ffffe67a50>
>>> print(c)
<__main__.C object at 0x6ffffe67a50>
>>>

如果您自己引用对象,是否有可能会调用默认方法,如下所示?

>>> c
'Nothing to see here, move along'
>>> print(c)
Nothing to see here, move along
>>>

2 个答案:

答案 0 :(得分:3)

您正在寻找的是__repr__方法,该方法返回该类实例的字符串表示形式。您可以这样重写方法:

class C:
    def __repr__(self):
        return 'Nothing to see here, move along'

这样:

>>> c=C()
>>> c
Nothing to see here, move along
>>> print(c)
Nothing to see here, move along
>>>

答案 1 :(得分:1)

对象启动时要运行的任何代码都应放入make_service中,如果要更改__init__()的效果,则可以覆盖对象的print(instance)。在一起看起来像:

__repr__()

输出:

class C(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y
        print(self.__repr__())
    def __repr__(self):
        return 'nothing to see here'

c = C(3, 4)
print(c)

通过调用nothing to see here nothing to see here 进行全班学习时,第一个打印在哪里,下一个来自print(self.__repr__())的打印