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() # 也可以实例化后调用