当前位置: 首页 > 面试题库 >

如何判断是函数还是方法?

贾烨
2023-03-14
本文向大家介绍如何判断是函数还是方法?相关面试题,主要包含被问及如何判断是函数还是方法?时的应答技巧和注意事项,需要的朋友参考一下

看他的调用者是谁,如果是类,就需要传入一个参数self的值,这时他就是一个函数,

如果调用者是对象,就不需要给self传入参数值,这时他就是一个方法

print(isinstance(obj.func, FunctionType)) # False

print(isinstance(obj.func, MethodType)) # True

 

class Foo(object):
    def __init__(self):
        self.name = 'lcg'
 
    def func(self):
        print(self.name)
 
 
obj = Foo()
print(obj.func)  # <bound method Foo.func of <__main__.Foo object at 0x000001ABC0F15F98>>
 
print(Foo.func)  # <function Foo.func at 0x000001ABC1F45BF8>
 
# ------------------------FunctionType, MethodType------------#
 
 
from types import FunctionType, MethodType
 
obj = Foo()
print(isinstance(obj.func, FunctionType))  # False
print(isinstance(obj.func, MethodType))  # True
 
print(isinstance(Foo.func, FunctionType))  # True
print(isinstance(Foo.func, MethodType))  # False
 
# ------------------------------------------------------------#
obj = Foo()
Foo.func(obj)  # lcg
 
obj = Foo()
obj.func()  # lcg
 
"""
注意:
    方法,无需传入self参数
    函数,必须手动传入self参数
"""

 

 类似资料:
  • 问题内容: 我有一个例程,它将字符串列表作为参数,但是我想支持传递单个字符串并将其转换为一个字符串列表。例如: 我的函数如何判断是否传入了字符串或列表?我知道有一个函数,但是有“更pythonic”的方式吗? 问题答案: 好吧,检查类型并没有什么异常。话虽如此,如果您愿意给来电者带来一点负担: 我认为这比“隐式的要好于隐式的”更具Python风格。当输入已经是列表形式时,在此至少在调用方方面存在识

  • 如何判断一个function是否是函数式组件? 我们有如下的函数式组件代码: 但是当我运行的时候报错: 这里说Hooks can only be called inside of the body of a function component. 但是我这个就是一个函数式组件呀,请问如何进行判断是否是函数式组件呢? 注: 我的文件路径在: 代码就是如上。没有看到有写错的地方呢,如何能判断我写的这个

  • 本文向大家介绍javascript判断网页是关闭还是刷新,包括了javascript判断网页是关闭还是刷新的使用技巧和注意事项,需要的朋友参考一下 原理就是通过离开页面行为时间onunload触发时间去检测此时的浏览器的窗口大小,根据大小由此判断用户是刷新,跳转或是关闭行为程序  代码如下  用浏览器右上角的关闭按钮时好用,但在选项卡上关闭和在任务栏上关闭,这个方法就不作用了 js标签只有onlo

  • 前端如何判断用户的 mac 是 arm 还是 x86 https://www.telerik.com/download/fiddler-everywhere 下载 fiddler-everywhere 的时候,它监测到了我的电脑是 arm 怎么实现的?浏览器的 UA 都还是谎称自己是 intel 是通过 js 调用浏览器 API 获得的结果吗?对应的 API 是哪个呢?

  • 问题内容: 如何调用会话对象,检查会话是一个新会话还是已在使用中? 我读到,如果客户端尚未使用会话ID进行响应,则返回true。但是这是什么意思 ?请解释 问题答案: 我读到,如果客户端尚未使用会话ID进行响应,则isNew()返回true。但是这是什么意思 ? 考虑服务器当前正在处理请求。关于会话处理,有两种方案。 在新的会话方案中,服务器正在为用户/客户端创建一个新的会话。(客户端可能未在请求

  • 问题内容: 我有一个页面可以通过Ajax加载其他页面(请考虑使用框架,除非没有框架)。 显然,这些页面都可以独立调用,因此我想检测是否通过Ajax调用了它们,如果不是,则重定向到主Ajax页面。 这些页面是php页面,因此我也可以访问它。 指数: 问题答案: 使用该对象进行请求时,现代浏览器会添加以下请求标头: 在PHP中,使用以下命令检查此标头的存在: