因此,我了解在Python中定义类时如何使用init。但是,对于在init函数中放置什么内容,或者根本不应该使用它,我感到困惑。例如:
在这里,我让用户定义实例化类时的概念:
class Fruit(object):
def __init__(self, concept):
self.concept = concept
Run Code Online (Sandbox Code Playgroud)
但是我也可以这样做,并且用户可以自己更改concept属性:
class Fruit(object):
def __init__(self):
self.concept = "I am a fruit"
Run Code Online (Sandbox Code Playgroud)
或者我可以完全放弃init函数:
class Fruit(object):
concept = "I am a fruit"
Run Code Online (Sandbox Code Playgroud)
在每个示例中,我都可以这样更改概念属性
test = Fruit()
test.concept = 'Whatever I want'
Run Code Online (Sandbox Code Playgroud)
所以我不确定为什么首先要使用init函数。似乎只能方便地预先定义所有属性。
此外,我如何知道在init函数中放置什么,以及仅在init外定义什么?
所以我有一个字符串列表,每个字符串都有固有的类型.
mixedbag = ['True', '2.7', '3', 'Ninety']
Run Code Online (Sandbox Code Playgroud)
我想将其转换为如下所示:
[True, 2.7, 3, 'Ninety']
Run Code Online (Sandbox Code Playgroud)
我想到的是创建一个大的try/except链来评估列表中的每个项目,但这并不像处理这个问题的pythonic方式.
我有一个以下形式的字典:
{'string1': 3, 'string2': 4, 'string3':2}
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个列表,其中键的实例是其对应的值对的函数.像这样:
['string1','string1','string1','string2','string2','string2','string2','string3','string3']
Run Code Online (Sandbox Code Playgroud)
我正在努力解决这个问题,因为我觉得应该有一个优雅的解决方案.这是我到目前为止所拥有的:
t2 = [dictionary[key]*key for key in dictionary.keys()]
Run Code Online (Sandbox Code Playgroud)
但这产生了以下混乱:
['string2string2string2string2', 'string3string3', 'string1string1string1']
Run Code Online (Sandbox Code Playgroud)