简单的介绍 Python 中的面向对象编程


        Python类定义中有一个命名规范, 就是类里面 "单下划线" 开始的成员变量叫做保护变量, 意思是只有类对象和自类对象自己能访问到这些变量; 而 "双下划线" 开始的是私有成员, 意思是只有类对象自己能访问, 连子类对象也不能访问到这个数据。下面是使用私有成员的一个例子。
Python代码
    class Fool:   
        def __init__(self):   
            self.__a = None # None 就是什么都没有   
        def set_a(self, a):   
            self.__a = a   
        def get_a(self):   
            print self.__a   
   fool_obj = Fool()   
   print foo.__a # 哼哼, 等着报错吧,   
   # 只有 foo "自己" 才可以 "看见" __a      
   fool_obj.set_a("Im A")   
   print fool_obj.get_a()  

class Fool:
    def __init__(self):
        self.__a = None # None 就是什么都没有

    def set_a(self, a):
        self.__a = a

    def get_a(self):
        print self.__a

fool_obj = Fool()
print foo.__a # 哼哼, 等着报错吧,
# 只有 foo "自己" 才可以 "看见" __a
fool_obj.set_a("Im A")
print fool_obj.get_a()
        把对象里面的成员保护起来, 曾经流行过一段时间, 特别是 Java 里面, 程序员似乎养成了习惯, 要改点东西一定要 get/set 一番, 也不觉得累。后来人们才发现好端端的 "等号" 不用非要搞一大堆劳什子 get 和 set 函数, 还在那里自称 "隐藏实现", 完全是自我虐待。聪明起来之后, 才找到真正 "隐藏实现" 的方法, 就是重定义等号运算符, 把许多本来就是应该用 get 和 set 的地方 (比如 get_time, 当前时间每次都要生成, 似乎只能用方法得到) 用直接操作成员变量的方法来做。

类继承:
Class Bar(Foo):
....

多重继承:
Class Bar(Foo1, Foo2, Foo3):
....
        所谓继承就是让新的类, 子类得到父类 (就是那个 Foo) 的成员和功能。但是最好不要忘记子类也 需要一个 __init__ 函数, 把 a、b、c、d 这些成员都创建出来, 或者直接调用父类的 __init__ 函数来完成这件事情, 并且我们通常是这样做的。

相关内容

    暂无相关文章

评论关闭