python-3.x - python3默认类属性到同一类中的方法
问题描述
class Test:
func = self.func2 # default: func is func2 by default
# tried Test.func2 as well and Pycharm shows error
def __init__(self, func=None):
if func is not None:
self.func = func
def func1(self):
pass
def func2(self):
pass
谁能建议如何实现上述目标?
我也尝试在构造函数中将 func 参数设置为默认为 func2 ,但这也是错误的。
所以后来,在Test类的某个地方,我可以只调用self.func而不是重复运行条件来找出应该使用func1还是func2
self.func()
****解决方案(我做了什么)****
在 main.py 中:
t = Test(func=Test.func1)
t.func(t, **kwargs)
这应该通过调用高阶方法 t.func 成功调用 t.func1(或 t.func2,如果指定)并访问 t instance_attributes
解决方案
您可以__init__
根据参数的值在方法中设置默认值func
:
也许是这样的:
class Test:
def __init__(self, func=None):
if func is None:
self.func = self.func2
else:
self.func = func
def func1():
print('func1')
def func2(self):
print('func2')
Test().func()
Test(Test.func1).func()
输出:
func2
func1
推荐阅读
- cakephp - CakePHP 3 属于ToMany 条件
- spring-boot - 如何通过 Keycloak REST API 获取访问令牌
- debugging - Azure API 管理跟踪和调试
- r - 为什么在使用多个选项卡时代码只能部分工作?
- javascript - 过滤日期数组(每天只允许输入一个日期)
- python - 为什么 fbchat 中的 client.listen 无法再次工作?
- sql - 从交易中计算余额
- c - 'gtk/gtk.h' 使用 makefile 构建 gtk 项目时找不到文件
- node.js - Mongoose 更新将虚拟填充保存到文档
- node.js - Mongoose 查询 MongoDB,对象内的 find() 对象