问题:什么是对象python
世间一切万物皆是“对象” 一我的 一棵树 一朵花 只要是存在的事物 均可以被称之为“对象”
对象的形态千千万万,若是加以管理呢,因此世界上出现了大陆,不一样的大陆分割着不一样大洲,不一样的大洲区分这不一样的国家,不一样的国家又有不一样的省份 类推...
类比到程序中,咱们想要完成一个庞大的项目时须要写出许许多多的功能,这一个个的功能形态万千 姿态万千,咱们若是能区分并分别管理他们呢?
咱们把这一个个模块 经过类似的功能 给分类,分完类再分工,这样整个项目就能扁平化铺开,每一个人负责一块,这样才最有效率。
对象和类编程
世间万物皆可分类,一花一草 一树一木 一人一畜
人分为男人 女人 老人 小孩, 动物分为 猫 狗 鼠... 这些个事物都是对象,可是他们都能找到一个共同点,人 和 动物,植物....
因此 类 能够理解为他们的共同特征。
人:有手脚 能说话 站立行走
动物 :有毛发 四肢行走 这样就产生了类。
那么 请思考,为何要有类呢
为何要有类函数
一家啤酒瓶厂,天天产出啤酒瓶为10几万个,咱们看到自动生产线上的机器直接将玻璃水作成了啤酒瓶,这是怎么作到的呢?
这是由于,人们将制做方法,工艺,材料,温度,过程,输入到了机器中,这样。
玻璃融化生产线,直接调用电脑的温度数据
材质生产线,直接调用材料的数据
机器直接调用制做方法和工艺的数据
这样,这条生产线就完成了自动生产。
对于各个生产线来讲,这台中心电脑的数据 则是本身的类。
那么 这个例子和咱们程序有什么关系呢?
面向对象编程性能
面向对象编程
例:咱们要利用python开发一款模拟人生的游戏,如今我要创造一我的物
这我的物有人类的特征,会吃饭,战斗,情感表现。
可是,这个游戏会有不少的人物,因此咱们把这些个共通特征建立为一个类,在类种建立更多种功能:方法,把吃饭,战斗,表现集成到类中
这样每个人物都来调用类中的方法,这样,就大量节约了开发成本,而且增长了代码的逻辑性!
以上就是我对面向对象的理解spa
那么,如何来编写一个面向对象的程序呢?code
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对象就能够阴用类中的方法'
类的特性:对象
类中有哪些成员呢?
类包含,字段,方法,属性。
可是每一个成员中,都包含私有成员 因此说类中有 普通字段 私有字段 普通方法 私有方法 普通属性 私有属性

字段blog
普通字段
class Person: name = 'alex' age = 18 P1 = Person() #实例化了一个对象P1 print P1.name #而后就能够经过P1来读取属性了 print P1.age # name , age 是类的公有属性 # 能够直接在类外经过对象名访问,私有属性,需在前面加2个下划线'__'便可。
上面说到私有属性,那么私有属性可否被访问呢不过这里建议,既然是私有属性,那么就不该该随意去访问它
私有字段
class Person: __name = 'alex' #建立了私有字段 __age = 18 P1 = Person() #实例化了一个对象P1 print 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_price obj = Goods() obj.price # 获取商品价格 obj.price = 200 # 修改商品原价 del obj.price # 删除商品原价