python - 同时使用类函数和静态方法? (Python)

标签 python function class static-methods instances

是否有可能有一个函数,其行为不仅像@staticmethod包装的函数,而且像任何其他类函数一样,这样如果通过实例调用该函数,就可以传递来自实例的数据?

示例:

class Amazing(object):
    @static_and_class
    def func(x):
        return type(x)

apple = Amazing()
<小时/>
>>> print(apple.func())
>>> <class 'Amazing'>
>>> print(Amazing.func(2))
>>> <class 'int'>
<小时/>

这是系统的一个基本示例。基本上,我想要的是一种在可能的情况下传递实例数据等信息的方法,但如果数据不存在,函数将采用必要的变量来执行其程序。

感谢任何能解决这个问题的人!!

最佳答案

任何类的任何方法都可以通过类名来调用。实例将自动将自身作为其任何方法的第一个参数传递。所以,如果你有类似的东西

class Bar:
    def bar(self):
        return type(self)

你可以做到

thing = Bar()
print(thing.bar())
print(Bar.bar(2))

你会得到

<class '__main__.Bar'>
<class 'int'>

没有任何问题。这当然是令人不悦的。当为实例编写方法时,应将 self 假定为为其编写的类的实例。

关于python - 同时使用类函数和静态方法? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29334504/

相关文章:

Python如何查找用户输入的字符数

c# - 使用对象发送者和 EventArgs 调用方法 c#

php - 修改 'functions.php'处的WordPress插件功能

c++ - 在 C++ 中调用指向成员函数的指针时出错

python - 为多个类定义方法

python - 将 Python argparse.Namespace() 视为字典的正确方法是什么?

python - 模块 'yaml' 没有属性 'FullLoader'

java 汇编的二进制文件根据源文件的顺序而变化

python - dateutil.parser.parse 不返回正确的日期时间

php - 如果 MySQL 函数用于自定义类,则 MySQL 确定是否在字符串周围加上单引号