如何解决类方法中的“自我”
我正在一个创建字典的类中定义一个方法。这本字典只是给字母表中的每个字母一个值。因此该方法不会操作该类的任何实例。在这种情况下,我是否需要将 self
作为方法的参数?
def build_shift_dict(self,shift):
import string
low = string.ascii_lowercase*2
up = string.ascii_uppercase*2
punc = list(" !@#$%^&*()-_+={}[]|\:;'<>?,./\"")
shift_dict = {}
for i in low[:26]:
shift_dict[i] = low[low.index(i) + shift]
for i in up[:26]:
shift_dict[i] = up[up.index(i) + shift]
for i in punc:
shift_dict[i] = i
return shift_dict
解决方法
不,您可以将其设为 static method
@staticmethod
def build_shift_dict(shift):
... do the things
,
如果你想要一个既不属于类的实例也不属于类的函数,你可以对函数使用 @staticmethod
装饰器,注意你需要删除 self
因此:
@staticmethod
def build_shift_dict(shift):
import string
low = string.ascii_lowercase*2
up = string.ascii_uppercase*2
punc = list(" !@#$%^&*()-_+={}[]|\:;'<>?,./\"")
shift_dict = {}
for i in low[:26]:
shift_dict[i] = low[low.index(i) + shift]
for i in up[:26]:
shift_dict[i] = up[up.index(i) + shift]
for i in punc:
shift_dict[i] = i
return shift_dict
文档
其他堆栈溢出答案
观察
对于某些人来说,被认为是对用户静态方法(或至少不是所有时间)的良好编程设计,并且通常更好地查看要在类外部声明的函数,而不是在类中使用它,然后将其包装在静态方法中,但实际上取决于。
另外,声明一个静态方法或创建一个函数在类之外基本上是一回事,因此更多的是设计选择而不是功能选择,并且取决于设计师/开发人员选择哪一个是最好的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。