Skip to content

Latest commit

 

History

History
144 lines (109 loc) · 3.86 KB

43.类的定义和对象创建.md

File metadata and controls

144 lines (109 loc) · 3.86 KB

类的定义和对象的创建

一.类的定义

格式:

class 类名称方法列表

demo:

# class Hero:  # 经典类(旧式类)定义形式

# 定义一个英雄类
class Hero(object):
  def info(self):
      print("英雄莫问出处")

说明:

定义类时有2种形式:新式类和经典类,上面代码中的Hero为新式类,前一行注释部分则为经典类;

object 是Python 里所有类的最顶级父类;

类名 的命名规则按照"大驼峰命名法";

info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量,这个变量指向了实例对象

详细格式:

class 类名(object):
    def  方法1self,参数列表# 必须是self
        pass
    def 方法2self,参数列表pass

二.创建对象

python中,可以根据已经定义的类去创建出一个或多个对象。

格式:

对象名 = 类名()

demo:

class Hero(object):
    def info(self):
        """info 是一个实例方法,类对象可以调用实例方法,实例方法的第一个参数一定是self"""
        print(self)
        """当对象调用实例方法时,Python会自动将对象本身的引用做为参数,传递到实例方法的第一个参数self里"""
        print("self各不同,对象是出处")


# Hero这个类 实例化了一个对象
super_man = Hero()
# 对象调用实例方法info(),执行info()里的代码
# . 表示选择属性或者方法
super_man.info()

print(super_man)  # 打印对象,则默认打印对象在内存的地址,结果等同于info里的print(self)
print(id(super_man))  # id(super_man)则是内存地址的十进制形式表示

三.添加和获取对象的属性

class Hero(object):
    """定义了一个英雄类,可以移动和攻击"""
    def move(self):
        """实例方法"""
        print("正在前往事发地点...")

    def attack(self):
        """实例方法"""
        print("发出了一招强力的普通攻击...")

# 实例化了一个英雄对象 泰达米尔
taidamier = Hero()

# 给对象添加属性,以及对应的属性值
taidamier.name = "泰达米尔"  # 姓名
taidamier.hp = 2600  # 生命值
taidamier.atk = 450  # 攻击力
taidamier.armor = 200  # 护甲值

# 通过.成员选择运算符,获取对象的属性值
print("英雄 %s 的生命值 :%d" % (taidamier.name, taidamier.hp))
print("英雄 %s 的攻击力 :%d" % (taidamier.name, taidamier.atk))
print("英雄 %s 的护甲值 :%d" % (taidamier.name, taidamier.armor))

# 通过.成员选择运算符,获取对象的实例方法
taidamier.move()
taidamier.attack()

四.在方法内通过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()

提示:

后续代码都是些新式类形式