对象是对客观事物的抽象,类是对对象的抽象。
类是一种抽象的数据类型,它们的关系是,对象是类的实例,类是对象的模板。
函数与类:
#定义函数
def func(): print(‘hello,world!‘) return ‘返回值‘ #默认为 None #调用函数 r = func() print(r)
#定义类 class Foo: #class 类名 def F1(self,name): #定义函数,在类中叫做方法 print(‘Hello,world!‘) print(name) return ‘返回值‘ #调用类 #创建对象 obj = Foo() #对象 = 类名() #通过对象执行方法 r = obj.F1(‘chentaicheng‘) #对象.方法() print(r)
当某些函数具有相同参数时,可以使用面向对象,将这些参数一次性封装到对象中,以后去对象中取值即可。
self解释:self是一个python会自动传值的参数
例如:
class Foo: def __init__(self,a1,a2,a3): self.name = a1 self.age = a2 self.addr = a3 def F1(self,name): print(‘Hello,world!‘) print(name) return ‘返回值‘ #创建对象,即运行类名()就会自动先执行类中的__init__方法 obj = Foo(‘chentaicheng‘,21,‘shantou‘) print(obj.addr) #obj.addr即使self.addr
即谁执行了方法,self就是那个谁。
#渣渣小程序
#!/usr/bin/env python # -*- coding: utf-8 -*- # author:chentaicheng class game: def __init__(self,name,sex,age,fig): self.name = name self.sex = sex self.age = age self.fig = fig def fight(self): self.fig -= 200 def xiulian(self): self.fig += 100 def games(self): self.fig -= 500 zhangsan = game(‘张三‘,‘男‘,30,1300) lisi = game(‘李四‘,‘男‘,40,1400) wangwu = game(‘王五‘,‘女‘,15,500) print(zhangsan.fig) print(lisi.fig) print(wangwu.fig) zhangsan.games() print(zhangsan.fig) wangwu.xiulian() print(wangwu.fig) lisi.fight() print(lisi.fig)
构造方法:类中的一个特殊的方法__init__,运行类()就会自动执行
封装、继承、多态
封装:例子:__init__方法,把类(参数,参数……)括号里的参数封装到对象中去。
继承:自己有先执行自己的,没有再从父类中找
没有共同父类时,一条道走到黑
有共同的一个父类时,从左先执行,走到顶端(未到父类)就不走缩回去
多态:多种类型,多种状态、引用Charlie Calverts对多态的描述--多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,
赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4 编程技术内幕")。
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
字段:
静态字段
普通字段
class Foo: stati = ‘静态字段‘ def F1(self): general = ‘普通字段‘ print(general) return ‘F1返回值‘ print(Foo.stati) obj = Foo() obj.F1()
PS:静态字段加载类时自动创建
方法:
普通方法 #由对象调用执行
@staticmethod #由类调用执行
@calssmethod #由类调用执行
属性:具有方法的写作形式,具有字段的访问形式
增删改差
#异常 try: #raise ValueError(‘主动错误一下‘) print(‘hell,world‘) except ValueError as e: print(‘数据异常‘) except Exception as e: print(‘异常‘) else: print(‘异常就不执行else这里,无异常执行完try就执行这‘) finally: print(‘程序最后,无论是否异常都会执行‘)
class Foo:
def __init__(self,name,age,addr):
self.name = name
self.age = age
self.addr = addr
def F1(self,name):
print(‘Hello,world!‘)
print(name)
return ‘返回值‘
#创建对象,即运行类名()就会自动先执行类中的__init__方法
obj = Foo(‘chentaicheng‘,21,‘shantou‘)
print(obj.addr) #obj.addr即使self.addr
原文:http://www.cnblogs.com/tcheng/p/5908621.html