Python中文
首页
教程
问答
标签
搜索
登录
注册
在类中使用接受参数的函数的参数的修饰符
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我已经找到了在类中使用decorator的方法,用args修饰decorator,用args修饰函数。但我不能让所有的事情都一起工作。我该怎么做?在</p> <pre><code>class Printer(): """ Print thing with my ESCPOS printer """ def text(self, text): with open('/dev/usb/lp0', 'wb') as lp0: lp0.write(text.encode('cp437')) lp0.write(b'\n') def command(self, command): with open('/dev/usb/lp0', 'wb') as lp0: lp0.write(command) lp0.write(b'\n') def style(command_before, command_after): """ Send a command before and a command after """ def decorator(func): def wrapper(self, text): print(self) print(text) self.command(command_before) func(text) self.command(command_after) return wrapper return decorator @style((b'\x1D\x42\x31'), (b'\x1D\x42\x32')) #print white on black @style((b'\x1D\x21\x34'), (b'\x1D\y21\x00')) #print bigger def title(self, title_text): self.text(title_text) </code></pre> <p>那我就可以这样用了:</p> ^{pr2}$ <p>这给了我一个“<em>TypeError:wrapper()缺少1个必需的位置参数:'text'</em>”</p> <p>但我就是没能理解</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>decorator中的<code>func()</code>仍然是一个未绑定的函数。您需要显式地绑定它或显式地传入<code>self</code>:</p> <pre><code># bind it to self func.__get__(self)(text) # or simply pass in self directly func(self, text) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
2 回答
如何在乒乓球游戏中阻止球
7 回答
如何在乘法和模中不乘空间?
9 回答
如何在乘法和除以2个不同的数字之间进行交换?
5 回答
如何在也是数据一部分的单个字符上拆分大字符串
8 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
5 回答
如何在事件wxWidgets中传递自定义数据
7 回答
如何在事件中使用lambda i=i?
4 回答
如何在事件中心只接收最近的数据
2 回答
如何在事件发生之前保持云函数运行?
9 回答
如何在事件发生后使页面重定向到同一页面
10 回答
如何在事件回调之间保持python生成器的状态
9 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
4 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
7 回答
如何在事件处理程序中访问外部对象?
5 回答
如何在事件循环中将协程打包为正常函数?
9 回答
如何在事件循环之外运行协同程序?
5 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
1 回答
如何在事件文件中只保留一份摘要?
10 回答
如何在事件模板中添加事件
4 回答