Knowledge of certain languages provides a good basis for learning Solidity, e.g. having worked with C and possibly even with assembly languages comes in handy when reasoning about bits and bytes, storage layout, fixed-width signed/unsigned integer types, etc. in Solidity. Having worked with an OOP language like Java will make it easier to understand concepts like contract inheritance, overriding of contract methods, etc. But this doesn’t mean that you should first study either of these languages before getting into Solidity — If you want to get into Solidity, then go for Solidity directly.
Then, as mentioned in the other answer, Solidity code doesn’t live in isolation, but you will need to develop code peripheral to your contracts. Altough you may be able to find libraries for several languages, including Python, your best bet is going to be JavaScript, because the leading libraries to interact with contracts (ethers, hardhat, etc.) are written for JavaScript. The tools in other languages often lag behind these in terms of features, Solidity language support, etc. Moreover, you will be better off in the long term if you make that extra initial investment to set yourself up with TypeScript instead of JavaScript.
Have fun!