【发布时间】:2022-01-20 12:17:35
【问题描述】:
我已经声明了一个接受函数作为可选参数的类。如果未设置此函数参数,则使用默认的类方法。否则,我使用我自己的函数。 我的代码结构如下:
class myClass:
def __init__(self,msg,foo=None):
self.msg=msg
self.foo=foo
def print(self):
if (self.foo == None):
self.innerPrint()
else :
self.foo(self.msg)
def innerPrint(self):
print("Inner Print : ",self.msg)
def outerPrint(msg):
print("Outer Print : ",msg)
所以,
myObj1=myClass("Hello")
myObj1.print()
打印:内部打印:你好
和
myObj2=myClass("Hello",outerPrint)
myObj2.print()
打印:外打印:你好
这是正确的方法还是可以简化此代码?
有人发布了一个已被删除的答案(很不幸,因为它对我有帮助)。
所以这是我的新代码结构:
class myClass:
def __init__(self,msg,foo=None):
self.msg=msg
self.printFoo=(foo or self._innerPrint)
def print(self):
self.printFoo(self.msg)
def _innerPrint(self,msg):
print("Inner Print : ",msg)
def outerPrint(msg):
print("Outer Print : ",msg)
我的类方法:print 现在只有一行。这是一个好习惯吗?
【问题讨论】:
-
你能说明这是如何使用的吗?
-
@scoot Hunter。好的,我编辑了我的问题
-
即使您不知道怎么做,您认为可以简化什么复杂性?
-
@Scott Hunter。我编辑了我的问题。这个想法是有可能用外部函数重载类的方法。我希望我很清楚。
-
@Scott Hunter。当类被实例化时,如果提供了外部函数,就会使用这个函数。否则,将使用具有相同原型的内部方法。
标签: python python-3.x class