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()))   #这两个写法是一样的
    
        #这么做最厉害的是可以动态的调用类中的方法了,想调用哪个都可以
  • 相关阅读:
    读INI文件的类
    [导入].net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等
    [导入]Sending email with c# using SMTP Servers
    [导入]Writing an ActiveX control with .Net
    C#基础之Dom笔记8
    韩顺平Java笔记内容简纳
    文本文件的检索
    ASP之vbscript笔记1
    数据库原理整理笔记1
    linux课程笔记2(崔老师)
  • 原文地址:https://www.cnblogs.com/zhuhaofeng/p/9561450.html
Copyright © 2011-2022 走看看