angry 发表于 2020-12-15 22:02:27

关于41课,魔法方法问题

class Rectangle:
        def __init__(self,x,y):
                self.x = x
                self.y = y
        def getPeri(self):
                return(self.x + self.y)*2
        def getAera(self):
                return(self.x * self.y)

       
rect = Rectangle(3, 4)
rect.getAera
<bound method Rectangle.getAera of <__main__.Rectangle object at 0x03531FF0>>
rect.getPeri
<bound method Rectangle.getAera of <__main__.Rectangle object at 0x03531FF0>>
为什么我的是这样的结果

昨非 发表于 2020-12-15 22:13:35

class Rectangle:
      def __init__(self,x,y):
                self.x = x
                self.y = y
      def getPeri(self):
                return(self.x + self.y)*2
      def getAera(self):
                return(self.x * self.y)

      
rect = Rectangle(3, 4)
print(rect.getAera)

此时的输出是:
<bound method Rectangle.getAera of <__main__.Rectangle object at 0x000001827FE7D460>>

而最后一行加了括号之后:
class Rectangle:
      def __init__(self,x,y):
                self.x = x
                self.y = y
      def getPeri(self):
                return(self.x + self.y)*2
      def getAera(self):
                return(self.x * self.y)

      
rect = Rectangle(3, 4)
print(rect.getAera())
此时输出正常
12
原因:调用方法时带括号和不带括号是不同的
详解可以参考
<font color="red">[已解决]</font>python函数最后,返回函数名带括号与否的区别
https://fishc.com.cn/thread-185095-1-1.html
(出处: 鱼C论坛)
<font color="red">[已解决]</font>Python 020讲 关于调用函数带和不带括号的问题
https://fishc.com.cn/thread-173008-1-1.html
(出处: 鱼C论坛)

梦回连营 发表于 2020-12-15 22:36:53

调用方法你没加括号啊
页: [1]
查看完整版本: 关于41课,魔法方法问题