公司可能过一两个月就要从深圳搬到东莞松山湖,项目组的现在有的在转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