twoSum理解python中的类、方法、对象(类的实例)

#self实际是类的实例

class A:
    def func(self):
        print(self)                      #指向的是类的实例
        print(self.__class__)         #指向的是类

a = A()
a.func()
#<__main__.A object at 0x02C40F10> ,显然是A()
#<class '__main__.A'>

#a=A() a.func()过程等价于
A.func(a)


#类属性
 
class Footballer:
 
    # 构造函数,创建对象时自动执行的方法,运行student = Footballer("马冬梅",18) 即会执行__init__
   
    def __init__(self,name,age):             #self==类的实例,即self==student        
        self.age=age                         #定义实例变量self.r
        print("我叫:",name,"今年",age,"岁")
 
    # 定义类变量(在类中但是不在方法中的变量)
    name = 'test'                         #此时self对象才有了name属性(self.name)
 
    # 定义类方法必须要加上self形参
    def speak(self):
        print('name:'+self.name)
        print('age:'+str(self.age))
 
 
student = Footballer("马冬梅",18)  
student.speak()

Output: 
我叫: 马冬梅 今年 18 岁
name:test
age:18


#twoSum两数之和
#solution 1

class Solution:
    def __init__(self, nums, target):  #构造函数,创建对象即运行
        self.n=nums
        self.t=target

    def twoSum(self):
        num_dict = dict()
        for index, value in enumerate(self.n):
            sub = self.t - value
            if sub in num_dict.keys():
                return [num_dict[sub], index]
            else:
                num_dict[value] = index

        return []
a=Solution([1,2,7,11],9)     #要在创建对象时传参,那需要构造函数。这一步运行了实际sef.n,self.t已经执行了。
a.twoSum()


#solution 2
class Solution:
    def twoSum(self, nums, target):
        num_dict = dict()
        for index, value in enumerate(nums):
            sub = target - value
            if sub in num_dict.keys():
                return [num_dict[sub], index]
            else:
                num_dict[value] = index

        return []
a=Solution()               #创建对象不传参
a.twoSum([1,2,7,11],9)     #对象调用方法再传参

#以上两行调用相当于:
Solution().twoSum([2,7,11,15],9)



#Solution 3                    #python切片
class Solution:
    def twoSum(self, nums, target):
        for i in range(len(nums)):
            if target-nums[i] in nums[i+1:]:
                return[i,nums.index(target-nums[i])]


#solution 4                  #通过列表值,去索引列表index
class Solution:
    def twoSum(self, nums, target):
        for index, value in enumerate(nums):
            sub = target - value
            if sub in nums:
                return [index,nums.index(sub)]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值