名称修改的目的是什么?

时间:2015-09-30 12:19:05

标签: python

在使用Python koans时,我遇到了名字错误。 koan解释说,存在名称修改以避免子类化时的名称冲突问题。公案如下:

class Dog(object):
    def name(self):
        return "Fido"

    def __password(self):
        return 'password'

def test_double_underscore_attribute_prefixes_cause_name_mangling(self):
    """Attributes names that start with a double underscore get
    mangled when an instance is created."""
    rover = self.Dog()
    try:
        #This may not be possible...
        password = rover.__password()
    except Exception as ex:
        self.assertEqual('AttributeError', ex.__class__.__name__)

    # But this still is!
    self.assertEqual('password', rover._Dog__password())

我不明白为什么漫游者.__密码()是不可能的。我假设它是因为有一个名字冲突。但是冲突在哪里?我只为__password()看到一个rover。任何人都可以提供一个更明确的例子,说明何时需要进行名称修改?

0 个答案:

没有答案