1、类中的普通方法只能通过实例化对象进行调用!类方法和静态方法可以通过类和实例对象进行调用
class Classname: @staticmethod def fun1(): print('fun1:静态方法') @classmethod def fun2(cls):##默认要传个参数 print('fun2:类方法') # 普通方法 def fun3(self): print('fun1:普通方法') Classname.fun1() Classname.fun2() #Classname.fun3()###类调用此方法会报错 met= Classname() met.fun3() met.fun2() met.fun3()
##########################################华丽分割线##############################################
2、给类和实例对象动态绑定方法
import types ###创建一个类### class Person(): def __init__(self,name): self.name=name def eat(self): print("%s正在吃..."%self.name) ###定义普通的方法 def play(): print("正在玩....") ###定义静态方法 @staticmethod def hut(a): print("正在看...",a) ###定义类方法 @classmethod def cut(cls): print("正在削...") ###定义实例化对象方法 def run(self): print("%s正在跑..."%self.name) ###实例化对象 p1=Person("HK") ####实例化对象绑定方法#### """# p1.run=run, p1.run(p1)等价于p1.run=types.MethodType(run,p1),p1.run()""" p1.run=types.MethodType(run,p1)###实例化对象绑定方法 #####给类绑定方法#### ###给类添加静态方法和类方法,添加后,实例化后的对象都可以对其进行调用。给类绑定普通的方法后,通过类可以调用该方法,但类的实例化对象不能调用#### Person.hut=hut Person.cut=cut Person.play=play Person.play()###注意给类绑定普通的方法后,通过类可以调用该方法,但类的实例化对象不能调用 ##p1.play()###实例对象不能调用类绑定的普通方法。 p1.hut(22) p1.cut() p1.run() p1.eat() print(p1.name)