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)
View Code

 

 
posted @ 2017-11-21 19:13  dwenwen  阅读(188)  评论(0编辑  收藏  举报