Python面向对象编程 —— 类和异常处理

发布时间:2023年12月30日

21dd41dce63a4f2da07b9d879ad0120b.png

?

🌈个人主页:?Aileen_0v0
🔥热门专栏:?华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:
"没有罗马,那就自己创造罗马~"


目录

1. 类

1.1 类的定义

1.2 类变量和实例变量

1.3 类的继承

2. 异常处理

2.1类型异常

2.2除零异常


1. 类


类可以将变量、函数打包在一起,让代码在逻辑上更加清晰。
名称一般采用驼峰命名法,函数一般采用下划线命名法。

类中函数的第一个参数都是self调用类本身的变量和函数。
当调用类中函数的时候,第一个参数self不需要自己传递,Python会自动传递这个参数。

1.1 类的定义

class Hero:
    hero_count = 0  # 类变量

    def __init__(self, name, level=10):  # 构造函数
        self.name = name
        self.level = level
        print("Hero %s has been created." % name)
        Hero.hero_count += 1

    def __str__(self):  # 定义str()函数的效果
        return "Hero: %s" % self.name

    def greet(self):  # 问候
        print("%s: Hi!" % self.name)

    def move(self):  # 移动
        print("%s: Move!" % self.name)

    def get_level(self):  # 获取这个英雄的等级
        return self.level

    def next_level(self):
        return self.get_level() + 1  # 调用类中的其他函数


zeus = Hero("Zeus")
athena = Hero("Athena", 6)
zeus.greet()
athena.move()
print(zeus.name, athena.get_level(), athena.next_level())
print(str(zeus), athena)
print(Hero.hero_count)

1.2 类变量和实例变量


每个类可以创建任意多实例。

例如上面的Hero类,可以创建zeus和athena等实例。

类变量由所有实例共享,一般通过类名访问。

例如Hero.hero_count。

实例变量与每个具体的实例绑定,一般通过具体实例来访问。

例如zeus.name。

1.3 类的继承

子类可以继承父类的变量和函数。

self可以调用自身和父类中的变量和函数super()可以调用父类中的函数。
如果子类和父类的变量或函数重名优先使用子类的变量和函数。

class Hero:
    hero_count = 0  # 类变量

    def __init__(self, name, level=10):  # 构造函数
        self.name = name
        self.level = level
        print("Hero %s has been created." % name)
        Hero.hero_count += 1

    def __str__(self):  # 定义str()函数的效果
        return "Hero: %s" % self.name

    def greet(self):  # 问候
        print("%s: Hi!" % self.name)

    def move(self):  # 移动
        print("%s: Move!" % self.name)

    def get_level(self):  # 获取这个英雄的等级
        return self.level

    def next_level(self):
        return self.get_level() + 1  # 调用类中的其他函数


class Zeus(Hero):
    hero_name = "Zeus"

    def __init__(self, level):
        super().__init__(Zeus.hero_name, level)  # 通过super()调用父类的构造函数

    def greet(self):
        print("%s: Hi!(from child class)" % self.name)  # 使用的是父类的`name`


class Athena(Hero):
    hero_name = "Athena"

    def __init__(self, level):
        super().__init__(Athena.hero_name, level)  # 通过super()调用父类的构造函数

    def greet(self):
        print("%s: Hi!(from child class)" % self.name)  # 使用的是父类的`name`


zeus = Zeus(6)
athena = Athena(8)
print(zeus.name, athena.level, Hero.hero_count)
print(str(zeus), str(athena))
zeus.greet()
athena.greet()
print(zeus.get_level())

运行结果:

?

2. 异常处理

当某段代码出现异常时,代码会被终止。

此时如果不想让代码终止,可以用try ... except ... 语句来处理异常。

2.1类型异常

例如,将字符串转化成整数时,可能会出现异常:

s = input()

try:
    x = int(s)
    print(x)
except Exception as e:
    print(e)

print("Finished!")

?

2.2除零异常

当除以0时,也会出现异常:

x, y = map(int, input().split())

try:
    z = x / y
    print(z)
except Exception as e:
    print(e)

print("Finished!")

?

文章来源:https://blog.csdn.net/Aileenvov/article/details/135306519
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。