kwargs - 对同一个类的两个不同对象进行Instanciating返回相同的对象

时间:2015-05-05 19:08:37

标签: python python-3.x constructor kwargs

我对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']

我觉得我错过了一些非常愚蠢的东西。求助。

0 个答案:

没有答案