面向对象初始
1、面对对象初始
# 相同功能的函数进行归类
# 面向对象的特点:
# 1,它是将某些相关的功能(函数)封装到了一起。
# 2, 你要站在上帝的角度,创建一个公共模板,然后通过模板创造不同的对象。
# 类 :具有相同属性和技能的一类事实物。
# 对象:类的具体表现。
# 猫是一类, 隔壁老奶奶家养的阿花一个对象。
# 狗是一类, 我们家养的一条哈士奇也是一个对象。
2、类
# 结构分析:类一般就分为两部分:变量,方法。
# 思想分析:创建一个类 公共模板,通过创建个体对象 可以享有公共方法。
示例:
# 类名
# 类名调用类中静态属性
class Person: mind = '有思想' animal = '高级动物' language = '文字语言' # 静态属性,静态变量 静态字段 def work(self): # 函数 方法,动态方法,动态属性。 print('人类都会工作') def eat(self): print('人类都需要吃饭') # 方法一:__dict__ 只能查询(不能增删改) 类中所有的静态属性,动态方法。 print(Person.__dict__) print(Person.__dict__['mind'])
Person.__dict__['mind'] = '无思想的' print(Person.__dict__) #报错 TypeError: 'mappingproxy' object does not support item assignment
# 方法二: 万能的点 . 可以查,可以改,可增,可删。 print(Person.animal) #查 高级动物 Person.animal = '低级动物' # 改 animal修改为低级动物 Person.name = '有姓名' # 增 为Person类增加一个name为有姓名 print(Person.animal) print(Person.name) del Person.animal # 删除 print(Person.animal) #查询发现animal没有了,报错type object 'Person' has no attribute 'animal' print(Person.__dict__)
# 类名执行类中的动态方法 (一般不建议用类名执行,除非是特殊方法:类方法,静态方法)
# Person.work('alex')
3、对象
# 类名+() 就是一个实例化对象的过程。
p1 = Person() # 实例对象
p2 = Person()
print(p1, p2)
class Game_Role: a1 = '英雄联盟' name = '太白' def __init__(self, name, sex, ad, hp): # __init__方法,特殊方法: 给对象封装属性 # print(self) # print(666) self.name = name self.sex = sex self.ad = ad self.hp = hp def fight(self, *args, **kwargs): pass def work(self): self.hobby = '大刀' # 增加hobby为大刀 print(self.__dict__) #{'name': '盖伦', 'sex': 'man', 'ad': 30, 'hp': 500, 'hobby': '大刀'}
gailun = Game_Role('盖伦', 'man', 30, 500) print(gailun.name) #盖伦
# 实例化对象的过程有几步:
# 1,实例化对象在内存中产生一个对象空间(内存地址)。
# 2,自动执行 __init__方法并且将对象空间传给了self参数。
# 3, 在 __init__方法中,给对象空间封装一些静态属性。
# 对象调用类的静态属性 使用万能的点: .可以调用类中的静态属性。
print(gailun.a1) #英雄联盟
# 对象执行类中动态方法:
gailun.work() # 此方法是对象调用执行类中的动态方法
print(gailun) # 打印对象:<__main__.Game_Role object at 0x00000041912289E8>
# self 约定俗成 self,类中的方法的第一个参数要设定为self,在对象调用方法时,会自动将对象空间传给self。
工作中:类中的静态属性一般通过类名去调用或者改变;类中的动态方法一般通过对象去执行。
gailun.fight('alex') #把上面的参数可以传给alex gailun.work() #对象执行类中动态方法
# 对象查看自己空间的属性。
# 查看全部:__dict__ print(gailun.__dict__) # 查看某个对象自己的静态属性: 万能的. 增删改查。 print(gailun.name) #查 print(gailun.sex) #查 gailun.name = 'GAIlun' #改 print(gailun.name) gailun.hobby = '大刀' #增 print(gailun.hobby) print(gailun.__dict__)
作者:wangkaiok —— 小菜鸟111
出处:http://www.cnblogs.com/wangkaiok/
本文版权归作者和博客园共有,但未经作者同意禁止转载,转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。