zoukankan      html  css  js  c++  java
  • python中的OO

    写给自己的备忘,很浅显,可能只是句法方面的事,不涉及OO思想之类的,因为OO思想是共通的,并没有python的OO思想一说
    PS 示例代码来自《python简明教程》

    继承
    python中的继承语法跟java/c++系不同,却不是:也不是extends,是这样的

    class child(parent):
    pass             #py中,pass是空语句块

    self,init,和del
    python中的self有点类似于c++/java中的this是指针,代表本实例,不同的地方在于self要写在类函数的参数列表中,传递了self才能在函数中使用类实例的数据,但在调用时不需要写这个参数
    init类似于构造函数,用法也差不多,而del,不像c++中的析构,比较像java中的finalize,在实例被回收时调用,同java中一样,这个函数被调用的时间是不一样的

    class SchoolMember:
    def __init__(self, name, age):
    self.name = name
    self.age = age
    print ‘(Initialized SchoolMember: %s)’ % self.name
    def __del__(self, name, age):pass

    def tell(self):
    print ‘Name:”%s” Age:”%s”‘ % (self.name, self.age)

    SchoolMember().tell()  <–这里不需要写self的引用

    类数据与实例数据

    class child():
    bi=2    <–在java中这个是要加staitc滴,也就是说这个实际上相当于静态
    def __init__(self):
    self.bb=3 <–实例数据

    重载
    基本一样,不同的是python中的构造函数并不自动调用基类的构造函数,需要显式调用。

    多继承
    python支持多继承,不过不晓得有没有用,反正在我看来,多继承就是记载于葵花宝典的屠龙之技,自宫去学它了吧,也不一定用得上

    让C/C++/Java人员不爽的地方:

      • * 类数据居然不用声明直接用的
      • * 数据居然不用指定类型的
      • * 函数居然没有返回值类型的
      • * 居然没有访问权限修饰符的(我是指public,private,protected,忘了术语怎么说了)
  • 相关阅读:
    身份证号码的秘密
    SQL Server中的DATEPART函数的使用
    VS2010+Visual Assist X
    Log4Net使用指南
    JScript中的prototype(原型)属性研究
    使用Transaction访问数据库(C#,TransactionScope,.NET 2.0)
    C# 中奇妙的函数–7. String Split 和 Join
    LinqToSQL实例参见
    得到当前网址的域名 ASP.NET
    oracle中delete、truncate、drop的区别
  • 原文地址:https://www.cnblogs.com/linyawen/p/2470051.html
Copyright © 2011-2022 走看看