在Python中创建类和对象

M-R*_*udi -1 python class object python-3.x

我有这个:

class Klasse1:
    variable1 = "haha"

print Klasse1.variable1
Run Code Online (Sandbox Code Playgroud)

还有这个:

class Klasse1:
    variable1 = "haha"

Object1 = Klasse1()
print Object1.variable1
Run Code Online (Sandbox Code Playgroud)

为什么我会使用第二个(太多的代码)而不是第一个(显然更容易)?在许多网站和教程中,我看到人们为他们可以轻松获得的东西创建对象而不创建它们.

Ada*_*ith 6

您创建对象以保持状态.如果你有类似的东西:

class Wallet(object):
    balance = 0
Run Code Online (Sandbox Code Playgroud)

在类的多个实例之间共享相同的平衡是没有意义的.您想要为Wallet您尝试跟踪的每一笔钱创建一个新实例.

因为你通过做类似的事情来使用它:

fred.wallet = Wallet
jim.wallet = Wallet  # same object!
Run Code Online (Sandbox Code Playgroud)

所以现在弗雷德花钱

fred.wallet.balance -= 3.50
Run Code Online (Sandbox Code Playgroud)

吉姆也花这笔钱.

>>> print(jim.wallet.balance)
3.50
Run Code Online (Sandbox Code Playgroud)

相反,你想要创建类的INSTANCES Wallet并为每个类赋予自己的状态

class Wallet(object):
    def __init__(self, balance=0):
        # __init__ is called when you instantiate the class
        self.balance = balance

fred.wallet = Wallet()
jim.wallet = Wallet()
Run Code Online (Sandbox Code Playgroud)

弗雷德花钱的时候:

fred.wallet.balance -= 3.50
Run Code Online (Sandbox Code Playgroud)

吉姆不会受到影响,因为他的Wallet对象是一个不同的实例

>>> print(jim.wallet.balance)
0
Run Code Online (Sandbox Code Playgroud)