class Human():
animal = "高级动物"
languae = '语言'
walk_way = "直立行走"

def __init__(self,name,age,eye):
self.name = name
self.age = age
self.eye = eye
print("对象初始化成功。。。")
def work(self):
print("是人就需要工作,不然的话,饿死")

def eat(self):
print("一天不吃饭,头晕眼睛花.....")


human = Human('chris',18,"美丽的大眼睛")

print(Human.__dict__) # 查看类的所有属性及方法

# 对象操作对象空间
print(human.__dict__) # 查看对象的所有属性及方法

# 对象操作对象空间的属性
print(human.name) # 查看对象的属性
human.sex = 'male' # 增加对象的属性
print(human.sex)
human.eye = "双眼皮" # 修改对象的属性
print(human.eye)
del human.sex # 删除对象的属性
# print(human.sex) # AttributeError: 'Human' object has no attribute 'sex'

# 对象操作类空间的属性 只能查看,不能修改
print(human.animal) # 查看类的属性,查看对象属性,先到对象空间找,再找类空间找
human.animal = "低级动物" # 看似修改,实际是在对象空间,增加一个属性


class GameRole:
rule = "游戏规则"

def __init__(self,area,nickname,hp,ad):
self.area = area
self.nickname = nickname
self.hp = hp
self.ad = ad
def attack(self):
print("谁施展了一个攻击")

gailun = GameRole('德玛西呀','草丛伦',1000,75)
yasuo = GameRole('艾欧尼亚','托儿所',500,150)

# 1 对象为什么能调用类中的属性与方法,而且只是调用,不能改变?
# gailun.属性名 先从自己空间去找,没有此属性他会通过 类对象指针 去类中找,类中找不到,会从父类去找
# print(gailun.hp)
print(gailun.attack)
gailun.attack = 666 # 对 对象的属性 进行 赋值,如果该对象存在此属性,则是修改,不存在,则是增加属性。
print(gailun.attack)

gailun.rule = gailun.rule
print(gailun.rule)

# 对象只能查看类的属性,不能修改类的属性

# 同一个实例化的对象之间不能相互调用
# 不同类实例化的对象之间可以相互调用。
print(gailun.attack)
print(yasuo.attack)
print(GameRole.attack)
GameRole.attack(gailun) # 当类调用其普通方法时,不会主动传参,要在达到对象调用时的效果,就将对象空间手动传递
gailun.attack() # 对象调用方法,会自动将对象的地址传方法的第一个参数
posted on 2018-08-24 09:23  yellwonfin  阅读(128)  评论(0编辑  收藏  举报