1. 程式人生 > >問題Missing 1 required positional argument引出的關於python例項化的經驗教訓

問題Missing 1 required positional argument引出的關於python例項化的經驗教訓

class Solution:
    def mySqrt(self, x):
        """
        :type x: int
        :rtype: int
        """
        l = 0
        r = x
        y = l + (l + r) / 2
        if x <= 1:
            return x
        else:
            while l <= r:
                if y * y == x:
                    return y
                elif y * y > x:
                    r = r - 1
                else:
                    l = l + 1
                y = (l + r) // 2
        return y


if __name__ == '__main__':
    a = 16
    mm = Solution()  # TODO 1.建立物件時,只需使用類名,且類名後面要帶括號!
    ss = mm.mySqrt(a)  # TODO 2.然後使用建立的物件呼叫該類的方法,並把呼叫該方法得到的結果賦值給變數ss
    print(mm, ss)
"""
記錄犯的錯誤,不要再重蹈覆轍!
1.建立物件時候寫成了 mm = Solution(a),執行就會提示 TypeError: mySqrt() missing 1 required positional argument: 'x'
2.另外,python例項化(建立物件)時寫成mm = Solution也不可以,不帶括號,因為不加括號就不是啟動例項,這個和設定一個別名是一樣的
  (說白了 加括號就是呼叫init函式 不加括號就是不呼叫init函式,不呼叫init函式就無法使用引數吧。這種描述可能不夠準確,歡迎大神指正!)
"""
記錄犯的錯誤,不要再重蹈覆轍!
1.建立物件時候寫成了 mm = Solution(a),執行就會提示 TypeError: mySqrt() missing 1 required positional argument: 'x'
2.另外,python例項化(建立物件)時寫成mm = Solution也不可以,不帶括號,因為不加括號就不是啟動例項,這個和設定一個別名是一樣的
  (說白了 加括號就是呼叫init函式 不加括號就是不呼叫init函式,不呼叫init函式就無法使用引數吧。這種描述可能不夠準確,歡迎大神指正!)