zoukankan      html  css  js  c++  java
  • 79.实例方法内通过self获取对象属性

    实例方法内通过self获取对象属性

    class Hero(object):
        """定义了一个英雄类,可以移动和攻击"""
        def move(self):
            """实例方法"""
            print("正在前往事发地点...")
    
        def attack(self):
            """实例方法"""
            print("发出了一招强力的普通攻击...")
    
        def info(self):
            """在类的实例方法中,通过self获取该对象的属性"""
            print("英雄 %s 的生命值 :%d" % (self.name, self.hp))
            print("英雄 %s 的攻击力 :%d" % (self.name, self.atk))
            print("英雄 %s 的护甲值 :%d" % (self.name, self.armor))
    
    
    # 实例化了一个英雄对象 泰达米尔
    taidamier = Hero()
    
    # 给对象添加属性,以及对应的属性值
    taidamier.name = "泰达米尔"  # 姓名
    taidamier.hp = 2600  # 生命值
    taidamier.atk = 450  # 攻击力
    taidamier.armor = 200  # 护甲值
    
    # 通过.成员选择运算符,获取对象的实例方法
    taidamier.info()  # 只需要调用实例方法info(),即可获取英雄的属性
    taidamier.move()
    taidamier.attack()

    问题:

    创建对象后再去添加属性有点不合适,有没有简单的办法,可以在创建对象的时候,就已经拥有这些属性?

    # 创建两个对象
    # 金毛 -> (金毛 2 黄色)
    # 藏獒 -> (藏獒 3 黑色)
    
    # 自定义犬类
    class Dog(object):
        # self是谁: 取决于哪个对象调用了这个方法
        # def func(self):
        #     print(self)
    
        # 实例方法(对象方法) 默认的第一个参数为self
        # 程序员也可以自己命名 一般直接使用默认
        def print_info(self):
            print(self.name)
            print(self.age)
            print(self.color)
    
    # 创建一只金毛
    jm = Dog()
    # <__main__.Dog object at 0x0000000000D6B2E8>
    # 如果打印一个对象的时候 默认输出的是16进制地址
    # print(jm)
    # jm.func(jm)
    # (金毛 2 黄色)
    # 添加属性
    jm.name = "金毛"
    jm.age = 2
    jm.color = "黄色"
    # 获取属性
    # print(jm.name)
    # print(jm.age)
    # print(jm.color)
    # print_info(jm)
    jm.print_info()
    
    # 创建一只藏獒
    za = Dog()
    # (藏獒 3 黑色)
    za.name = "藏獒"
    za.age = 3
    za.color = "黑色"
    # 获取属性
    # print(za.name)
    # print(za.age)
    # print(za.color)
    # print_info(za)
    za.print_info()
  • 相关阅读:
    1203 forms组件
    1128 聚合查询 orm字段及属性
    1127 模型层orm表操作
    1126 视图层与模板层
    1122 django中orm操作
    1121 Django操作
    1125 视图层
    搭建并行开发环境MPICH2
    Linpack之HPL测试 (HPL Benchmark)
    安装NetCDF及HDF5
  • 原文地址:https://www.cnblogs.com/kangwenju/p/12866507.html
Copyright © 2011-2022 走看看