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)
为什么我会使用第二个(太多的代码)而不是第一个(显然更容易)?在许多网站和教程中,我看到人们为他们可以轻松获得的东西创建对象而不创建它们.
您创建对象以保持状态.如果你有类似的东西:
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)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |