亦又 发表于 2024-4-8 22:05:24

作业题

class C:
   def __init__(self, data=250):
         self.data = data
   def __str__(self):
         return f"data = {self.data}"
   def __repr__(self):
         return f"C({self.data})"
   def __add__(self, other):
         self.data += other
如果同时定义了 __repr__(self)和__str__(self),想要调用__repr__(),除了用repr(c)函数,还有什么办法?
@FishC

FishC 发表于 2024-4-8 22:05:38

除了使用`repr(c)`函数,您还可以直接调用`c.__repr__()`方法来返回`__repr__()`方法的结果。例如:

c = C()
print(c.__repr__())

输出结果将是`C(250)`。

不过需要注意的是,直接调用`__repr__()`方法并非一种常见的用法,一般情况下我们会使用`repr()`函数来获取对象的字符串表示。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

亦又 发表于 2024-4-8 22:10:18

在idle编辑器模式有没有类似与交互模式下只输入对象c时,直接会调用__repr__(self)方法的操作?@FishC

FishC 发表于 2024-4-8 22:11:05

亦又 发表于 2024-04-08 22:10
在idle编辑器模式有没有类似与交互模式下只输入对象c ...

在IDLE编辑器模式下,如果你创建了一个对象c并直接输入c,是无法直接调用`__repr__(self)`方法的。此时,IDLE会默认调用内置的`__repr__()`方法,打印出对象的默认表示形式,类似于`<__main__.ClassName object at 0x00000123>`。

如果你想要在IDLE编辑器模式下也能直接调用`__repr__(self)`方法并打印出自定义的字符串表示形式,你可以执行以下操作:

class ClassName:
    def __repr__(self):
      return "自定义的字符串表示形式"

c = ClassName()# 创建对象
c# 直接输入对象名,调用__repr__()方法并打印自定义的字符串表示形式

这样,当你在IDLE编辑器中输入`c`并回车时,就会调用对象的`__repr__()`方法,并打印出你自定义的字符串表示形式。

希望这个解答能帮到你,如果你有任何疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

亦又 发表于 2024-4-8 22:15:20

在编辑器模式下,调用__repr__(self)方法的操作有哪些?@FishC

FishC 发表于 2024-4-8 22:15:42

亦又 发表于 2024-04-08 22:15
在编辑器模式下,调用__repr__(self)方法的操作有哪些 ...

在编辑器模式下,调用`__repr__(self)`方法的操作主要有以下几种:

1. 在交互式解释器中直接输入对象名并回车,会自动调用对象的`__repr__()`方法,返回表示对象的字符串。

例如:
class Person:
    def __init__(self, name):
      self.name = name

    def __repr__(self):
      return f"Person('{self.name}')"

p = Person('Alice')
p# 调用 p.__repr__() 方法
输出:
Person('Alice')

2. 使用`print()`函数打印对象时,会自动调用对象的`__repr__()`方法,返回表示对象的字符串。

例如:
class Person:
    def __init__(self, name):
      self.name = name

    def __repr__(self):
      return f"Person('{self.name}')"

p = Person('Bob')
print(p)# 调用 p.__repr__() 方法并打印
输出:
Person('Bob')

3. 使用`str()`函数将对象转换为字符串时,如果对象没有定义`__str__()`方法,则会调用对象的`__repr__()`方法。

例如:
class Person:
    def __init__(self, name):
      self.name = name

    def __repr__(self):
      return f"Person('{self.name}')"

p = Person('Charlie')
s = str(p)# 调用 p.__repr__() 方法并返回字符串
print(s)
输出:
Person('Charlie')

总之,在编辑器模式下,调用`__repr__(self)`方法的操作主要是直接使用对象名或通过`print()`函数打印对象。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

luonaergang 发表于 2024-4-9 10:52:56

学习了
页: [1]
查看完整版本: 作业题