|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 GlacierGao 于 2021-3-10 19:35 编辑
请问各位大佬:如题,力扣的第一题,学习了一位标答的答案:
- class Solution(object):
- def twoSum(self, nums, target):
- length = len(nums)
- for i in range(length - 1):
- for j in range(i + 1, length):
- if nums[i] + nums[j] == target:
- return [i, j]
复制代码
但是很奇怪在访问属性的时候都没有加self.,我就都加上了试了一下:
- class Solution(object):
- def twoSum(self, nums, target):
- length = len(self.nums)
- for i in range(self.length - 1):
- for j in range(i + 1, self.length):
- if self.nums[i] + self.nums[j] == self.target:
- return [i, j]
复制代码
就报错了。请问这是为什么呢?
本帖最后由 qq1151985918 于 2021-3-10 20:59 编辑
self指的是类本身啊,而类本身没有这个属性当然就是未定义,这个还有什么异议么?
就好比一台电脑,明明没有D盘你非要调用D盘的数据当然找不到了
除非你给电脑装一个D盘
这个代码就是这样
self.nums 指向的是 Solution.nums 或者说 Solution().nums,而Solution并没有这个属性,除非你给定义一个。比如说把代码改成这样 - class Solution(object):
- def twoSum(self, nums, target):
- self.nums = nums
- self.target = target
- self.length = len(self.nums)
- #length = len(self.nums)
- for i in range(self.length - 1):
- for j in range(i + 1, self.length):
- if self.nums[i] + self.nums[j] == self.target:
- return [i, j]
- print(Solution().twoSum("12323456678","34"))
复制代码或者这样 - class Solution(object):
- nums = "12323456678"
- target = "34"
- def twoSum(self, nums = "", target = ""):
- self.length = len(self.nums)
- for i in range(self.length - 1):
- for j in range(i + 1, self.length):
- if self.nums[i] + self.nums[j] == self.target:
- return [i, j]
- print(Solution().twoSum())
- print(Solution.nums)
- print(Solution().nums)
复制代码又或者这样 - class Solution(object):
- def __init__(self):
- self.nums = "12323456678"
- self.target = "34"
- def twoSum(self, nums = "", target = ""):
- self.length = len(self.nums)
- for i in range(self.length - 1):
- for j in range(i + 1, self.length):
- if self.nums[i] + self.nums[j] == self.target:
- return [i, j]
- print(Solution().twoSum())
- print(Solution().nums)#这里还有点区别,不带括号就不行
复制代码不过后边的两种就已经没有了参数作为变量的作用了
也不知道你看不看得懂,还是多学习学习吧,多学习多实验多练习就会了。
|
|