面向对象编程思想得易于c++和java面向对象(Object Oriented Programming,OOP)编程思想在上世纪70年代就产生了,并在90年代被人们广泛接受并实践,得益于c++和java的推动。OOP不是一种或几种语言的特性,而是一种抽象数据类型的思想,c++、java、c#、Python等有可以用这种思想去编程,事实上,高阶段的开发者都是用这种思想进行软件的开发。
Python的历史今天事实上Python诞生于1991年,可以说比java还要早呢,起初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,Python不断的发展壮大至今天的地位,现在越来越多被用于独立的、大型项目的开发,如:google,youtube等都是用python进行开发
定义类定义类实际上就是对对象进行抽象数据化,就像数学中的数字,现实中并不存在1、2、3……是我们为了方便理解,对现实世界抽象化的结果。对象的抽象化我们在程序中用关键字class,例1:
class IntSet(object):
pass
新的数据类型Teacher正如int,list,dict等数据类型,语言内置的类型是有限的,有时候我们不得不自己定义一个类型。下面定义一个教师对象的类型,包括姓名,年龄,工资,以及方法(Method)工资的增长。例2:
import datetime
class Teacher(object):
def __init__(self,name,salary):
self.name = name
self.salary = salary
def setBirthday(self,birthdate):
self.birthdate = birthdate
def getAge(self):
return datetime.datetime.now().year - self.birthdate.year
def risePay(self,percent):
percent = float(percent.replace('%',''))/100
self.salary = self.salary * (1 + percent)
return self.salary
说明
1.object表示的是新建的Teacher类是object的子类,后面会讲。
2.函数命名中讲过,Python中有一些特殊命名的方法,在开头和结尾都有两个下划线,如_init_,这叫初始化方法,在实例化中默认会被调用。
3.self用来指向创建的对象,这就是为什么叫面向对象的原因,定义一个类就有一个内部默认指向对象的参数self,当然也可以用别的名字,建议不用!这是Python编程规范。
创建一个t对象
t = Teacher('Mike',5000)
t.risePay('10%')
print(t.name + "`s salary is " + t.salary)
t.setBirthday(datetime.date(2000,6,10))
print(t.birthdate)
print(t.getAge())
print(type(t.getAge))
#output:
Mike`s salary is 5500.0
2000-06-10
19
说明
1.方法和函数的区别,方法需要实例化才能调用,函数不需要,t.getAge就是一个方法。
2.t = Teacher('Mike',5000),这代码的意思是创建一个t对象(实例化),把t绑定到形参self上,然后调用init方法,初始化name、salary属性(就是给赋值),之后,t可以理解为Teacher,有Teacher所有的属性和方法。