• 面向对象初始


    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() # 对象调用方法,会自动将对象的地址传方法的第一个参数
  • 相关阅读:
    NS网络仿真,小白起步版,双节点之间的模拟仿真(基于UDP和CBR流)
    Linux学习,ACL权限管理
    SQL中的注释语句
    C#连接SQL Server数据库小贴士
    C#重写ToString
    C#控制台应用程序之选课系统
    浅谈C、C++及其区别、兼容与不兼容
    C++之客户消费积分管理系统
    A*算法
    HTML标签列表总览
  • 原文地址:https://www.cnblogs.com/chris-jia/p/9527889.html
Copyright © 2020-2023  润新知