类中的函数带有self,不带self的区别

1.类里函数不带self,这是我们调用类里的函数直接用类名.函数名()

class shop(object):
    def scan_goods():                 #括号内不带self
        print('浏览商品')
    def choose_goods():
        print('选择商品')
    def delete_goods():
        print('删除商品')
a=getattr(shop,'scan_goods')()
a=getattr(shop,'delete_goods')()
lis=[('浏览商品','scan_goods'),('选择商品','choose_goods'),('删除商品','delete_goods')]
for index,opt in enumerate(lis,1):
    print(index,opt[0])            
    a=getattr(shop,opt[1])()                  #类名不加()直接加函数名调用

结果:

浏览商品
删除商品
1 浏览商品
浏览商品
2 选择商品
选择商品
3 删除商品
删除商品

  

2.带有self的类调用函数,调用类里的函数直接用类名(args1,args2).函数名()

class Animal(object):
    def __init__(self,name,kind):
        self.name = name
        self.kind = kind

    def eat(self,food):             #带有参数的self
        print('%s eat %s'%(self.name,food))

    def drink(self):
        print('%s drink water'%(self.name))

    def catch(self):
        print('%s catch mouse'%(self.name))
Animal('猫','美短').catch()                      #调用Animal(),这里需要带括号传参数      
结果: 猫 catch mouse

  

3.@staticmethod方法:

class C(object):
    @staticmethod
    def f():
        print('runoob');
 
C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用

  

猜你喜欢

转载自www.cnblogs.com/Zhao159461/p/10638257.html
今日推荐