Python 3.x 创建一个好的类方法
我构建了一个类,根据类型向用户提问Python 3.x 创建一个好的类方法,python-3.x,function,oop,while-loop,logic,Python 3.x,Function,Oop,While Loop,Logic,我构建了一个类,根据类型向用户提问 class Question: def __init__(self, subject): self.subject = subject self.question = f"Enter the {subject} to be created. You may end this by typing 'DONE':\n" self.still_needed = True def
class Question:
def __init__(self, subject):
self.subject = subject
self.question = f"Enter the {subject} to be created. You may end this by typing 'DONE':\n"
self.still_needed = True
def ask_question(self):
ans_list = []
running = True
while running:
var = input(f"Enter {self.subject}?\n")
if var.lower() == 'done':
running = False
else:
ans_list.append(var)
return ans_list
其想法是建立一个问题模型,创建项目列表
这似乎与以下主要代码配合得很好
roles=Question(subject=“role”)。询问问题()
这将从Queue类创建一个列表,并使用其方法ask question生成该列表。据我所知,对象随后被销毁,因为它没有保存到变量中
我的问题是,作为Python和OOP的新手,这似乎是一种可靠且不易混淆的方式,还是我应该使用折射器?如果是,社区有什么建议?我的意见 我想这取决于你。首先,使用类的主要目的之一是稍后使用它创建实例。类是对象,或者我喜欢称之为“类别”,当项目中存在不同类型的实例时,可以使用它们 鉴于你的代码片段,我真的不能提出任何建议,我不知道
self.question
和self.still\u needed
的用法。然而,如果我的观点仅基于这一部分:roles=Question(subject=“role”).ask_Question()
,那么我肯定会使用函数来代替。正如你所说
据我所知,该对象随后被销毁,因为它没有保存
一个变量
替代解决方案
使用装饰器→ 带@符号的那个
在这种情况下,@staticmethod
就是最好的选择
什么是静态方法?staticmethod装饰器是在类中创建函数的一种方法。因此,它不是一种方法,而是一种函数(没有自参数)。这也意味着静态方法绑定到类而不是对象。因此,静态方法不依赖于对象(因此,您不需要创建对象来使用它)。例如:
class SomeMathStuff():
@staticmethod
def AddSomeNumbers(iterable):
return sum(iterable)
result = SomeMathStuff.AddSomeNumbers([1, 2, 3])
# result = 6
如您所见,我不需要创建对象,而是需要调用它的类来使用它。警告一句,大多数Python程序员认为这是一种非Python的方式,但我不会对此太担心。见鬼,我有时也会用这些方法。在我的辩护中,这是组织项目的一种好的、有效的方法。这样,您就可以全局应用类方法,并且可以将它们“分类”到您认为合适的某些类中
不管怎样,这就是我所有的!如果我以任何方式误解了你,我向你道歉
其他信息。。。以防我不是最好的老师