关于python的类

class Person:
    def setName(self,name):
        self.name = name
    def getName(self):
        return self.name
    def greet(self):
        print "Hello world!My name is %s" % self.name

foo = Person()
bar = Person()
foo.setName("Linda")
bar.setName("Hellen")
foo.greet()
bar.greet()

print "Done!Tada!!"
让方法或者属性变为私有:
class Person:
    def setName(self,name):
        self.name = name
    def getName(self):
        return self.name
    def greet(self):
        print "Hello world!My name is %s" % self.name

foo = Person()
bar = Person()
foo.setName("Linda")
bar.setName("Hellen")
foo.greet()
bar.greet()

print "Done!Tada!!"

运行时结果:

AttributeError: Person instance has no attribute '__greet'

class Person:
    def setName(self,name):
        self.name = name
    def getName(self):
        return self.name
    def __greet(self):
        print "Hello world!My name is %s" % self.name

foo = Person()
bar = Person()
foo.setName("Linda")
bar.setName("Hellen")
foo._Person__greet()
bar._Person__greet()

print "Done!Tada!!"

这样写就又可以输出正确的结果了:这是因为在类的内部定义中,所有以双下划线开始的名字都被翻译成前面加上单下划线和类名的形式。


版权声明:本文为u014328357原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。