假设我在Python中创建了以下类:
class SomeClass(object):
variable_1 = "Something"
def __init__(self, variable_2):
self.variable_2 = variable_2 + self.variable_1
我不明白为什么变量位于方法之外(我应该说是函数?)定义,但是在类体内部,没有使用像variable_1
这样的点表示法命名,方法定义中的变量是命名 - 例如:self.variable_2
- 或引用 - 例如:self.variable_1
使用点表示法。这只是一个特定于Python的符号,还是出于其他原因?
答案 0 :(得分:1)
这不是你在C ++或java中找到的东西。它不仅是一种符号。请参阅文档documentation:
类参与Python的动态特性:它们是在 运行时,可以在创建后进一步修改。
功能也是如此。
这是定义类的有效方法:
def f1(self, x, y):
return min(x, x+y)
class C:
text = 'hello world'
f = f1
def g(self):
return self.text
h = g
f
,g
和h
是C
的属性。为了使它工作,将对象作为函数的参数传递是很重要的。按照惯例,它被命名为self
。
这非常强大。它允许真正使用函数作为属性。例如:
c = C()
class B:
text = 'hello word 2'
g = c.g
对B.g()
的调用将返回'hello word 2'
。只有使用self
。
为了记录,您还可以阅读global
的文档和一般的变量范围。