zoukankan      html  css  js  c++  java
  • 开发必备知识点--函数与方法

    函数和方法有什么区别?

    以前学习面向对象的阶段,通常把写在类里面的叫做方法,写在类外面的叫做函数。其实不然。

     1 class Foo(object):
     2     def f1(self):
     3         print('f1')
     4 
     5 
     6 def f2():
     7     print('f2')
     8 
     9 f = Foo()
    10 print(type(f2))
    11 print(type(Foo.f1))
    12 print(type(f.f1))

    到这里,你还能说f2就是函数,f1就是方法吗???

    看输出结果:

    1 <class 'function'>
    2 <class 'function'>
    3 <class 'method'>

    function是函数,method是方法。你的之前的结论是错的,那我们怎么来辨别它们两者呢。从打印结果可以猜想,它们也是一个type造的类,

     所以我们可以这样玩。

     1 from types import MethodType, FunctionType
     2 
     3 
     4 def check(arg):
     5     if isinstance(arg,MethodType):
     6         print('%s 是方法'%arg)
     7     elif isinstance(arg,FunctionType):
     8         print('%s 是函数' % arg)
     9     else:
    10         print('都不是')
    11 check(f2)
    12 check(Foo.f1)
    13 check(f.f1)

     输出结果也是一样的:

    1 <function f2 at 0x000001C52F1670D0> 是函数
    2 <function Foo.f1 at 0x000001C52F371B70> 是函数
    3 <bound method Foo.f1 of <__main__.Foo object at 0x000001C52F15EB00>> 是方法

    所以,我们要以调用者来区分是函数还是方法。

  • 相关阅读:
    java中math类
    java中的值传递和引用传递(转)
    eclipse 字体和配色修改
    JAR WAR EAR包的区别
    java中基本类型
    tomcat 7.0 配置详解
    或许你需要一些可操作性更强的实践
    Assembly.CreateInstance()与Activator.CreateInstanc
    OOD沉思录2 类和对象的关系包含关系
    C#的插件开发
  • 原文地址:https://www.cnblogs.com/xjmlove/p/9955226.html
Copyright © 2011-2022 走看看