我试图理解,除了这个名字之外,这些类之间是否有任何区别?如果我在声明变量"value"时使用或不使用__init __()函数会有什么不同吗?
class WithClass ():
def __init__(self):
self.value = "Bob"
def my_func(self):
print(self.value)
class WithoutClass ():
value = "Bob"
def my_func(self):
print(self.value)
Run Code Online (Sandbox Code Playgroud)
我主要担心的是,我将以一种方式使用它,因为这将导致我的问题进一步发展(目前我使用init调用).
我正在学习这个,这是为了理解类的属性.但与以下代码片段的输出混淆.
class A:
aliases = None
name = None
def __init__(self,name):
self.name = name
self.aliases = set([name])
def add_aliases(self,a):
self.aliases.add(a)
def __repr__(self):
return str(self.name) + str(self.aliases)
arr = []
for i in range(3):
arr.append(A(i))
arr[-1].add_aliases(i+1)
for item in arr:
print item
A.aliases = set([]) ##Modify the static element of class
for item in arr:
print item
Run Code Online (Sandbox Code Playgroud)
Python解释器:2.7.9
输出是
0set([0, 1])
1set([1, 2])
2set([2, 3])
0set([0, 1])
1set([1, 2])
2set([2, 3])
Run Code Online (Sandbox Code Playgroud)
我期待这样的东西作为输出.
0set([2, 3])
1set([2, 3])
2set([2, …Run Code Online (Sandbox Code Playgroud) 我是一名C#开发人员学习python.
如果我想定义一个具有某些属性的类,但不为属性提供默认值,那该怎么办?
例如(这是我最好的猜测方法):
class Spam
eggs = None
cheese = None
Run Code Online (Sandbox Code Playgroud)
或者,这是合法的:
class Spam
eggs
cheese
Run Code Online (Sandbox Code Playgroud)
或者是其他东西?