zoukankan      html  css  js  c++  java
  • python类中成员的的调用

    python类中成员的调用

    python类中的方法到底到底是方法还是函数取绝于调用者,

    当类名调用这个方法时他是一个函数

    class Foo(object):
        def f1(self):
            print("hello beijing")
        def f2(self):
            print("hello china")
        def f3(self):
            print("hello world")
    obj1=Foo()
    Foo.f1(obj1)                    #当以类名调用时,他是一个函数,但是
    print(Foo.f1(obj1))           #需要自己传值
         
    
    
    obj2=Foo()
    obj2.f2()                          #当以实例调用时他是一个方法,这个用的
    print(obj2.f2())                 #不用多解释 

     关于这个知识点最主要的应用在反射中体现的比较重要

    如下

    class Foo(object):
        def f1(self):
            print("hello beijing")
        def f2(self):
            print("hello china")
        def f3(self):
            print("hello world")
    
    
    
    obj2=Foo()
    func_or_val = getattr(Foo,"f1")  #这个相当于执行了Foo.f1,上面讲过,这 个要手动传参的
    print(func_or_val)
    print(func_or_val(obj2))

    obj2=Foo()
    func_or_val = getattr(obj2,"f1") #这个相当于执行了obj2.f1 ,当他是一个方法的时候不需要传参
    print(func_or_val)
    print(func_or_val())

    类中成员的调用和反射的最终结合

    class Handler:
        f0 = 9
        def f1(self):
            print('F1--001')
        def f2(self):
            print('F2--002')
        def f3(self):
            print('F3--003')
        def f4(self):
            print('F4--004')
        def f5(self):
            print('F5--005')
    while True:
        print("""
        系统支持的函数有:
            1. f1
            2. f2
            3. f3
            4. f4
            5. f5
        """)
        val = input("请输入要执行的函数:")
        func_or_val = getattr(Handler, val)
        print(func_or_val)           #这个相当于Handler.f1,在这里f1是个函数,前面说过,后面是要自己传参数的
        obj=Handler()
        print(func_or_val(obj))         #传的参数是实例
        print(func_or_val(Handler()))   #这两个写法是一样的
    
        #这么做最厉害的是可以动态的调用类中的方法了,想调用哪个都可以
  • 相关阅读:
    i'm all geared up
    android设置主题和自定义主题的方法
    &和&&的区别
    兼容IE与Firefox的js 复制代码
    实用的注册表单验证代码
    常用JavaScript属性和方法
    400多个JavaScript特效大全
    float引起层飘出父层的解决方法
    JavaScript常见兼容性处理
    多种方法实现checkbox全选、取消全选、删除功能
  • 原文地址:https://www.cnblogs.com/zhuhaofeng/p/9561450.html
Copyright © 2011-2022 走看看