python-初识面向对象
# class Person: #类名有两个作用
# country = '中国' #country被称为静态属性或数据属性
# def walk(self): ##动态属性、函数属性、方法
# print('walk')
# 类名有两个作用:1.属性引用 2.实例化对象
1.属性对象的引用 # print(Person.country) #静态属性的查看 # # print(Person.walk) # Person.role = '人' #添加一个新的静态属性 # print(Person.role) # Person.country = '印度' #修改一个新的静态属性 # print(Person.country) # del Person.role #删除一个静态属性 # print(Person.__dict__) # print(Person.walk()) #会报错,原因是缺少self参数 # Person.__dict__['country'] = '印度'#会报错,该dict不支持修改 # print(Person.__dict__['country']) # print(Person.country) #同dict一样都是可以查看的 # 2.类能完成的第二个功能:实例化对象 # 实例化:从一个类中创造一个具体的对象的过程 # p = Person() # print(p) #Person的对象 class Person: country = '中国' def __init__(self,life_value,aggr,name,job):#初始化方法 self.lv = life_value self.aggr = aggr self.name = name self.job = job def walk(self): print('%s is walking'%self.name) # p = Person() #如何让对象拥有具体的属性 p = Person(1000,2,'金老板','boss') #如何让对象拥有具体的属性 # p.walk() # print(p.lv) # print(p.aggr) # p.sex = 'girl' #添加一个属性 # print(p.sex) # p.sex = 'lady_boy' #属性的修改 # print(p.sex) # # del p.sex #属性的删除 # print(p.__dict__) # print(p.__dict__['lv']) #查看 # p.__dict__['lv'] = 998 #对象名.__dict__中的属性值可以被修改 # print(p.__dict__['lv'],p.lv) # p.__dict__['sex'] = 'lady_boy' #对象名.__dict__中的属性值可以增加 # print(p.__dict__,p.sex) # p.__dict__.pop('sex') #对象名.__dict__中的属性值可以被删除 # print(p.__dict__)
类的定义:class关键字,类名的首字母大写
# 类中直接定义属性:静态属性(变量)和动态属性(函数)
# 类名的两个作用:属性的引用,实例化对象
# 类名和属性的操作:对象名.属性名 对象名.__dict__['属性名'](不能修改)
# 实例化--类名(参数)
# 构造函数:造函数
# 初始化__init__:给这个赤裸裸的对象添加一些属性,__init__返回了一个初始化之后的对象
# __init__方法:初始化方法,可以没有,给对象添加一些必要的基础属性
# self的含义:就是这个对象本身
# 对象和属性的操作:对象名.属性 对象名.__dict__['属性名']
总结:
# 对象的属性是可以直接增删改查的
# 对象.__dict__也是可以查看,增加,修改和删除pop的
# 类的属性是可以直接增删改查的
# 类.__dict__可以查看
面向对象交互小例子
# 人类: # 属性:life_value,aggr,anme,job # 方法:attack class Person: def __init__(self,life_value,aggr,name,job): self.life = life_value self.aggressive = aggr self.name = name self.job = job def attack(self,dog_obj): print('%s攻击了%s'%(self.name,dog_obj.name)) dog_obj.life = dog_obj.life - self.aggressive # 狗类: # 属性:life_value,aggr,name,kind # 方法bite class Dog: def __init__(self,life_value,aggr,name,kind): self.life = life_value self.aggr = aggr self.name = name self.kind = kind def bite(self,person_obj): print('%s咬了%s'%(self.name,person_obj.name)) person_obj.life -= self.aggr tiedan = Dog(1000,100,'铁蛋','土狗') boss_gold = Person(100,2.5,'金老板','old_driver') boss_gold.attack(tiedan) print(tiedan.life) tiedan.bite(boss_gold) print(boss_gold.life)