博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python初识面向对象(一)
阅读量:5145 次
发布时间:2019-06-13

本文共 3947 字,大约阅读时间需要 13 分钟。

问题:什么是对象

世间一切万物皆是“对象” 一个人 一棵树 一朵花 只要是存在的事物 都可以被称之为“对象” 对象的形态千千万万,如果加以管理呢,所以世界上出现了大陆,不同的大陆分割着不同大洲,不同的大洲区分这不同的国家,不同的国家又有不同的省份 类推... 类比到程序中,我们想要完成一个庞大的项目时需要写出许许多多的功能,这一个个的功能形态各异 姿态万千,我们如果能区分并分别管理他们呢? 我们把这一个个模块 通过相似的功能 给分类,分完类再分工,这样整个项目就能扁平化铺开,每个人负责一块,这样才最有效率。

对象和类

世间万物皆可分类,一花一草  一树一木 一人一畜 人分为男人 女人 老人 小孩, 动物分为 猫 狗 鼠...  这些个事物都是对象,但是他们都能找到一个共同点,人 和 动物,植物....所以 类 可以理解为他们的共同特征。 人:有手脚 能说话 站立行走 动物 :有毛发 四肢行走  这样就产生了类。 那么 请思考,为什么要有类呢

为什么要有类

一家啤酒瓶厂,每天产出啤酒瓶为10几万个,我们看到自动生产线上的机器直接将玻璃水做成了啤酒瓶,这是怎么做到的呢?这是因为,人们将制作方法,工艺,材料,温度,过程,输入到了机器中,这样。玻璃融化生产线,直接调用电脑的温度数据材质生产线,直接调用材料的数据机器直接调用制作方法和工艺的数据这样,这条生产线就完成了自动生产。 对于各个生产线来说,这台中心电脑的数据 则是自己的类。那么 这个例子和我们程序有什么关系呢?

 面向对象编程

面向对象编程例:我们要利用python开发一款模拟人生的游戏,现在我要创造一个人物这个人物有人类的特征,会吃饭,战斗,情感表现。但是,这个游戏会有很多的人物,所以我们把这些个共通特征创建为一个类,在类种创建更多种功能:方法,把吃饭,战斗,表现集成到类中 这样每一个人物都来调用类中的方法,这样,就大量节约了开发成本,并且增加了代码的逻辑性!

以上就是我对面向对象的理解

那么,如何来编写一个面向对象的程序呢?

class person(object):    #country = '中国'    def __init__(self):        pass    def eating(self):        print 'im eating '    def play(self):        print 'im playing'    def kiss(self):        print 'give me one kiss'me = person()#类的实例化me.kiss()me.eating()#print 'me 是 类person 的实例对象,通过实例化后 me对象就可以阴用类中的方法'

类的特性:

类中有哪些成员呢?类包含,字段,方法,属性。但是每个成员中,都包含私有成员 所以说类中有  普通字段 私有字段 普通方法 私有方法 普通属性 私有属性

字段

普通字段 class Person:    name = 'alex'    age = 18P1 = Person()      #实例化了一个对象P1print P1.name      #然后就可以通过P1来读取属性了print P1.age# name , age 是类的公有属性# 可以直接在类外通过对象名访问,私有属性,需在前面加2个下划线'__'即可。
上面说到私有属性,那么私有属性能否被访问呢 私有字段 class Person:    __name = 'alex' #创建了私有字段    __age = 18P1 = Person()      #实例化了一个对象P1print P1.Person.__name      #然后就可以通过P1来读取私有属性了print P1.Person.__age
 不过这里建议,既然是私有属性,那么就不应该随意去访问它

 方法

普通方法 class person(object):    #country = '中国'    def __init__(self):        pass    def eating(self):        print 'im eating '    def play(self):        print 'im playing'    def kiss(self):        print 'give me one kiss'me = person()#类的实例化me.kiss()me.eating()#print 'me 是 类person 的实例对象,通过实例化后 me对象就可以阴用类中的方法'
私有方法 调用 class person(object):    #country = '中国'    def __init__(self):        pass    def __eating(self):  #私有方法是不允许对象直接调用的, 如果像调用可以间接调用        print 'im eating '    def d_eating(self):       return person.__eating #通过在类中的一般方法来调用私有方法    def __play(self):        print 'im playing'    def __kiss(self):        print 'give me one kiss'    me = person()#类的实例化me.d_eating()me.eating()#这种调用 是错误#print 'me 是 类person 的实例对象,通过实例化后 me对象就可以阴用类中的方法'

属性

什么是属性呢,请看下面代码class person(object):    #country = '中国'    def __init__(self):        pass   @property #属性和方法的区别是,这里使用了一个装饰器函数     def eating(self):        print 'im eating 'me = person()#类的实例化me.eating  #重要的是,在对象调用属性的时候,直接按照调用字段的方式就可以了, 这样就把方法伪造成了普通字段。并且意义就这里!
定义属性有两种方式1,经典类# ############### 定义 ###############    class Goods:    @property    def price(self):        return "wupeiqi"# ############### 调用 ###############obj = Goods()result = obj.price  # 自动执行 @property 修饰的 price 方法,并获取方法的返回值2,新式类# ############### 定义 ###############class Goods(object):    @property    def price(self):        print '@property'    @price.setter    def price(self, value):        print '@price.setter'    @price.deleter    def price(self):        print '@price.deleter'# ############### 调用 ###############obj = Goods()obj.price          # 自动执行 @property 修饰的 price 方法,并获取方法的返回值obj.price = 123    # 自动执行 @price.setter 修饰的 price 方法,并将  123 赋值给方法的参数del obj.price      # 自动执行 @price.deleter 修饰的 price 方法
新式类的集中访问方法lass Goods(object):    def __init__(self):        # 原价        self.original_price = 100        # 折扣        self.discount = 0.8    @property    def price(self):        # 实际价格 = 原价 * 折扣        new_price = self.original_price * self.discount        return new_price    @price.setter    def price(self, value):        self.original_price = value    @price.deltter    def price(self, value):        del self.original_priceobj = Goods()obj.price         # 获取商品价格obj.price = 200   # 修改商品原价del obj.price     # 删除商品原价

 

转载于:https://www.cnblogs.com/tank1992/p/5028283.html

你可能感兴趣的文章
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>
绝望的第四周作业
查看>>
一月流水账
查看>>
npm 常用指令
查看>>
判断字符串在字符串中
查看>>
Linux环境下Redis安装和常见问题的解决
查看>>
HashPump用法
查看>>
cuda基础
查看>>
Vue安装准备工作
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
LibSVM for Python 使用
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
java可重入锁reentrantlock
查看>>
浅谈卷积神经网络及matlab实现
查看>>