想在类的内部定义一个只用于该类的成员方法的修饰器
问题描述:
想在类的内部定义一个只用于该类的成员方法的修饰器,这样写是否合理?类内部的修饰器
__print_transfer_detail
是否是成员方法?是成员方法的话,既是修饰器又是成员方法,它的参数中可以没有self吗?不是成员方法的话,它需要用@classmethod 或者@staitcmethod修饰吗?
相关代码:
import datetime class BankUser(): def __init__(self, money, kind): self.__money = money self.kind = kind def __print_transfer_detail(func): def inner(self, transfertype, amount): func(self, transfertype, amount) print("{}\t{}\t{:+.2f}\t{}\t{:.2f}".format(datetime.date.today(), transfertype, amount, self.kind, self.__money)) return inner @__print_transfer_detail def transfer(self, transfertype, amount): self.__money += amount user = BankUser(2000, '人民币') user.transfer('转入', 27800) user.transfer('消费', -99) user.transfer('消费', -100) user.transfer('转入', 500) user.transfer('网转', -5000)
相关截图:
36
收起
正在回答
1回答
同学,你好!1、类内部的修饰器是合理的
2、它不属于成员方法,使用对象.__print_transfer_detail会报错
3、不使用self 也会报错,定义初始化的参数无法传到__print_transfer_detail中
4、@classmethod 或@staitcmethod也无法单独调用该方法,只能在类中作为修饰transfer方法的装饰器
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星