为什么Python同时调用这两个函数?

2024-09-28 22:40:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些问题要理解这里发生了什么

这是我的消息来源:

class Calc():

    def __init__(self,Ideal,Limit,Value,Debug=None):

        self.Ideal = Ideal
        self.Limit = Limit
        self.Value = Value
        self.Debug = Debug
        self.Grade = self.GetGrade()
        self.LenGrade = self.GetLenGrade()

    def GetGrade(self):
        if self.Debug:
            print('calling GetGrade')
        return Grade

    def GetLenGrade(self):
        if self.Debug:
            print('calling GetLenGrade')
        return Grade

当你用

GradeMinLen += Calc(TargetLen, LimitMinLen, Length ,Debug=1).LenGrade

我总是得到输出

calling GetGrade    
calling GetLenGrade

为什么python调用GetGrade


Tags: debugselfreturnifvaluedefcalcgrade
2条回答

在对象初始化代码中,有以下内容:

self.Grade = self.GetGrade()
self.LenGrade = self.GetLenGrade()

这意味着“将数据成员等级的值设置为通过调用GetGrade方法获得的值”,对于LenGrade也是如此

他们被叫来并不奇怪,如果他们不被叫来就更奇怪了

您创建了一个Calc()的实例,每当您这样做时,就会为这个新实例调用Calc.__init__()

您的Calc.__init__()方法同时调用self.GetGrade()self.GetLenGrade()

self.Grade = self.GetGrade()
self.LenGrade = self.GetLenGrade()

在这里,创建实例后只访问LenGrade属性并不重要;__init__中的上述两行不存储方法引用,它们存储方法调用的结果。Calc(...).LenGrade然后返回其中一个结果;另一个结果是

相关问题 更多 >