我对python非常熟悉,但我不太了解“pythonic”的做事方式,我想学习。起初我试图创建两个不同的构造函数,我可以选择使用**kwargs
,根据您传递(或不传递)到构造函数的属性,您可以执行不同的操作。
我现在面临的问题是,无论我如何调用构造函数,它总是返回我创建的第一个对象的副本。
以下是示例代码:
class MyClass():
items = []
def __init__(self, **kwargs):
if 'fill' in kwargs:
print('putting something in your class')
self.items.append('something')
filled = MyClass(fill=True)
empty = MyClass()
another_filled = MyClass(fill=True)
another_empty = MyClass(anything=80)
print(filled)
print(empty)
print(another_filled)
print(another_empty)
print(filled.items)
print(empty.items)
print(another_filled.items)
print(another_empty.items)
退出:
putting something in your class
putting something in your class
<__main__.MyClass object at 0xb71b9b4c>
<__main__.MyClass object at 0xb71b9c0c>
<__main__.MyClass object at 0xb71b9c2c>
<__main__.MyClass object at 0xb71b9ccc>
['something', 'something']
['something', 'something']
['something', 'something']
['something', 'something']
我觉得我错过了一些非常愚蠢的东西。求助。