个人主页: Aileen_0v0
热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
个人格言:"没有罗马,那就自己创造罗马~"
目录
1. 类
1.1 类的定义
1.2 类变量和实例变量
1.3 类的继承
2. 异常处理
2.1类型异常
2.2除零异常
类可以将变量、函数打包在一起,让代码在逻辑上更加清晰。
类名称一般采用驼峰命名法,函数一般采用下划线命名法。
类中函数的第一个参数都是self:调用类本身的变量和函数。
当调用类中函数的时候,第一个参数self不需要自己传递,Python会自动传递这个参数。
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)
每个类可以创建任意多实例。
例如上面的Hero类,可以创建zeus和athena等实例。
类变量由所有实例共享,一般通过类名访问。
例如Hero.hero_count。
实例变量与每个具体的实例绑定,一般通过具体实例来访问。
例如zeus.name。
子类可以继承父类的变量和函数。
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())
运行结果:
当某段代码出现异常时,代码会被终止。
此时如果不想让代码终止,可以用try ... except ... 语句来处理异常。
例如,将字符串转化成整数时,可能会出现异常:
s = input()
try:
x = int(s)
print(x)
except Exception as e:
print(e)
print("Finished!")
当除以0时,也会出现异常:
x, y = map(int, input().split())
try:
z = x / y
print(z)
except Exception as e:
print(e)
print("Finished!")