首页 > 其他 > 详细

面向对象编程

时间:2016-09-26 13:05:34      阅读:135      评论:0      收藏:0      [点我收藏+]

对象是对客观事物的抽象,类是对对象的抽象。

类是一种抽象的数据类型,它们的关系是,对象是类的实例,类是对象的模板。

函数与类

#定义函数
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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!