python学习笔记—普通方法,静态方法、类方法及其绑定

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)

你可能感兴趣的:(python)