python学習ノート-一般的な方法、静的方法、クラス方法、およびそのバインド

1662 ワード

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)