为什么点符号用于"方法"变量而不是其他人?

时间:2015-06-17 21:46:20

标签: class python-2.7 methods attributes

假设我在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的符号,还是出于其他原因?

1 个答案:

答案 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

fghC的属性。为了使它工作,将对象作为函数的参数传递是很重要的。按照惯例,它被命名为self

这非常强大。它允许真正使用函数作为属性。例如:

c = C()
class B:
    text = 'hello word 2'
    g = c.g

B.g()的调用将返回'hello word 2'。只有使用self

才有可能

为了记录,您还可以阅读global的文档和一般的变量范围。