公司可能过一两个月就要从深圳搬到东莞松山湖,项目组的现在有的在转Java或其他语言的,问我们要不要转java+hoodap+spark方向,我还是先不转,毕竟之前是从ios转回C#,这现在在转其他的那样每一种都是学个皮毛,都学的不精通。我还是先把C#学好再说,在学C#的基础上可以了解下其他语言,这周看老板朋友圈发招聘要找python,之前只是听说有这个语言,用处还挺广,可一直没去了解过,昨天晚上算是百度了下,看了下具体介绍,用处也挺广的,机器学习都可以用它,今天上午一早起床安装了开发工具Pycharm来玩一下Python。

一、和C#语言的比较

Python也是面向对象的语言,大家也都知道面向对象有3特征,继承、封装和抽象。Python也不例外,由于自己也算接触过C C++(两个都是大学学的,已经还给老师),工作又接触过OC C#,语言只是工具,他们肯定也是有共性和差异。

二、已面向对象3特征为基础

既然Python是面向对象,也是3大特征,所以可以将3大特征涉及的知识列出来,然后对照着学习,比如继承,C#中单继承,多继承采用接口,Python中多继承可以用,逗号隔开。已C#为参照,学习Python更快。

三、实践检验真理

早上一早起来安装开发工具,倒腾了好久,原本想着先跑步呢,安装完开发环境,写了一个helloworld之后又想着试试面向对象的功能,所以写了下面的一个demo。注释也都在代码中。也比较基础只是大概的粗矿的了解,熟悉其他编程语言一眼就能看出,这里只是做个热身,以后会慢慢熟悉Python的细节。

class Person:
    __count=0  #私有属性  在变量、方法前增加两个下划线既声明的是私有变量方法
    def __init__(self,name,age): #构造函数
        self.name=name
        self.age=age
        self.__count+=1
        print("count is %d" %self.__count)

    def __del__(self):  #类似C#中析构函数
        class_name = self.__class__.__name__
        print("%s销毁" % class_name)

    def showSelf(self):#实例方法
        print("hello,I am a person,my name is %s and my age is %d" % (self.name,self.age))

    def __getCount(self):  # 私有方法 无法继承不能在外部访问
        return self.__count

    def get_count(self):
        print("count is %d" % self.__getCount())  # 内部访问私有方法

    @staticmethod  #声明静态方法关键字
    def staticTest():
        print("staticTest")

    @classmethod   #声明类方法关键字
    def classTest(self):
        print("classTest")

class Student(Person):#继承Person父类,如果多个用,隔开
    def __init__(self,name,age,school):
        super().__init__(name,age)   #父类初始化 C#只学base(参数) python 有些不同
        self.school=school
    def __del__(self):
        class_name = self.__class__.__name__
        print ("%s销毁"%class_name)

    def showSelf(self):   #函数重写,覆盖父类方法
        print("hello,I am a student,my name is %s,my age is %d and my school is %s"  % (self.name, self.age,self.school))

per=Person("cuiyanwei",20)
per.showSelf()
per.staticTest()
per.classTest()
per.get_count()
del per

stu=Student("cuiyanwei",20,"周口师范")
stu.showSelf()
stu.staticTest()
stu.classTest()
stu.get_count()
del stu

Python面向对象基础一的更多相关文章

  1. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  2. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  3. Python 面向对象基础知识

    面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...

  4. python 面向对象基础和高级复习

    面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...

  5. 十六、python面向对象基础篇

    面向对象基础: 在了解面向对象之前,先了解下变成范式: 编程范式是一类典型的编程风格,是一种方法学 编程范式决定了程序员对程序执行的看法 oop中,程序是一系列对象的相互作用 python支持多种编程 ...

  6. 1.Python面向对象基础

    面向对象(OOP) 面向对象编程--object oriented programming 简写 OOP   面向过程和面向对象的区别: 面向过程: 1.把完成某一个需求的所有步骤从头到尾逐步实现 2 ...

  7. [python面向对象]--基础篇

    1.#类 #类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 #定义一个类 class bar: def foo(self,agr): print(self,agr) obj = bar() ...

  8. Python面向对象基础:编码细节和注意事项

    在前面,我用了3篇文章解释python的面向对象: 面向对象:从代码复用开始 面向对象:设置对象属性 类和对象的名称空间 本篇是第4篇,用一个完整的示例来解释面向对象的一些细节. 例子的模型是父类Em ...

  9. python面向对象基础-01

    面向对象(OOP)基本概念 前言 话说三国时期曹军于官渡大败袁绍,酒席之间,曹操诗兴大发,吟道:喝酒唱歌,人生真爽! 众将直呼:"丞相好诗",于是命印刷工匠刻板印刷以流传天下; 待 ...

随机推荐

  1. sentiwordnet的简单使用

    # Example line: # POS     ID     PosS  NegS SynsetTerm#sentimentscore    Desc # a   00009618  0.5    ...

  2. MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟

    本来MySQL BINLOG和mysqldump命令属于八竿子打不着的两个事物,但在最近故障排查中,发现主库和从库已经存在很严重的复制延迟,但从库上显示slave_behind_master值为0,复 ...

  3. 实验8 LCD8*8点阵

    1.控制点阵红绿交替显示,分别从上到下,从左到右循环闪烁三次 接线: P0接J12.P1接J20.P2接J19 /** 1.控制点阵红绿交替显示,分别从上到下,从左到右循环闪烁三次 **/ #incl ...

  4. 用NginX+keepalived实现高可用的负载均衡

    Table of Contents 1 规划和准备 2 安装 3 配置 3.1 配置NginX 3.2 配置keepalived 3.3 让keepalived监控NginX的状态 4 还可以做什么 ...

  5. C# json字符串转为对象

    方法1: using System.Web.Script.Serialization; string ss = "{\"NewsCount\":\"3482\& ...

  6. PowerDesigner执行脚本 name/comment/stereotype互转

    执行方法:工具栏->Tools -> Execute Commands -> Edit/Run Script (Ctrl+Shift+X) 如下图所示: 1.Name转到Commen ...

  7. Redis---SDS(简单动态字符串)

    Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类 ...

  8. 微信小程序之模版的使用(template)

    WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用. 分为两部分,定义模板和使用模板 (1).定义模板:使用 name 属性,作为模板的名字.然后在<templ ...

  9. c++中的const和volatile知识自我总结

    学习了下c++中的const关键字,总结如下. 1.const限制一个变量不能修改其内容,如果强行修改的话,如下面代码这样子,编译就会报错,“表达式必须是可修改的左值”. int main() { c ...

  10. Spring WebSocket踩坑指南

    Spring WebSocket踩坑指南 本次公司项目中需要在后台与安卓App间建立一个长连接,这里采用了Spring的WebSocket,协议为Stomp. 关于Stomp协议这里就不多介绍了,网上 ...