深度学习计算机毕设之基于机器学习的蘑菇毒性预测分析及应用实现
2026/1/1 22:48:36
本文主要介绍Python中类的定义、类的命名、类的构造函数、定义类的方法以及类的继承等知识点。
在Python中,类是通过class关键字定义的,用于创建具有相同属性和方法的对象。
python# 基本语法class类名:# 类的内容pass# 示例:定义一个简单的类classDog:pass类名通常遵循大驼峰命名法(PascalCase):
python# 正确的类名示例classStudent:passclassBankAccount:passclassShoppingCart:pass# 不推荐的类名classstudent:# 应首字母大写passclassSTUDENT:# 不应全部大写passclassstudent_info:# 应使用大驼峰,而不是下划线pass构造函数__init__()是一个特殊方法,在创建类的新实例时自动调用:
pythonclassStudent:# 构造函数def__init__(self,name,age,student_id):# 初始化实例属性self.name=name self.age=age self.student_id=student_id self.grades=[]# 可以设置默认值# 另一个示例:带默认参数的构造函数def__init__(self,name,age,student_id=None):self.name=name self.age=age self.student_id=student_idorf"STU{abs(hash(name))%10000:04d}"# 创建对象student1=Student("张三",20,"S001")student2=Student("李四",21)# student_id使用默认值类方法是定义在类中的函数,第一个参数通常是self:
pythonclassBankAccount:# 构造函数def__init__(self,account_holder,initial_balance=0):self.account_holder=account_holder self.balance=initial_balance self.transactions=[]# 实例方法defdeposit(self,amount):"""存款方法"""ifamount>0:self.balance+=amount self.transactions.append(f"存款: +{amount}")returnf"存款成功!当前余额:{self.balance}"else:return"存款金额必须大于0"defwithdraw(self,amount):"""取款方法"""if0<amount<=self.balance:self.balance-=amount self.transactions.append(f"取款: -{amount}")returnf"取款成功!当前余额:{self.balance}"else:return"取款失败:余额不足或金额无效"defget_balance(self):"""获取余额"""returnself.balancedefget_transaction_history(self):"""获取交易历史"""returnself.transactions# 特殊方法:字符串表示def__str__(self):returnf"账户持有人:{self.account_holder}, 余额:{self.balance}"# 使用类account=BankAccount("王五",1000)print(account.deposit(500))# 存款成功!当前余额: 1500print(account.withdraw(200))# 取款成功!当前余额: 1300print(account)# 账户持有人: 王五, 余额: 1300python# 父类(基类)classAnimal:def__init__(self,name,age):self.name=name self.age=agedefeat(self):returnf"{self.name}正在吃东西"defsleep(self):returnf"{self.name}正在睡觉"defmake_sound(self):return"动物发出声音"# 子类(派生类)继承父类classDog(Animal):def__init__(self,name,age,breed):# 调用父类的构造函数super().__init__(name,age)# 添加子类特有的属性self.breed=breed# 重写父类方法defmake_sound(self):returnf"{self.name}汪汪叫"# 添加子类特有的方法deffetch(self):returnf"{self.name}正在接飞盘"classCat(Animal):def__init__(self,name,age,color):super().__init__(name,age)self.color=colordefmake_sound(self):returnf"{self.name}喵喵叫"defclimb(self):returnf"{self.name}正在爬树"# 多继承示例classFlyable:deffly(self):return"飞行动物在空中飞翔"classSwimmable:defswim(self):return"水生动物在水中游泳"# 多重继承classDuck(Animal,Flyable,Swimmable):def__init__(self,name,age):Animal.__init__(self,name,age)defmake_sound(self):returnf"{self.name}嘎嘎叫"# 使用继承dog=Dog("旺财",3,"金毛")print(dog.eat())# 继承自Animal类print(dog.make_sound())# 重写后的方法print(dog.fetch())# Dog类特有的方法cat=Cat("咪咪",2,"白色")print(cat.sleep())# 继承自Animal类print(cat.climb())# Cat类特有的方法duck=Duck("唐纳德",1)print(duck.fly())# 继承自Flyable类print(duck.swim())# 继承自Swimmable类print(duck.make_sound())# 重写后的方法# 类型检查print(isinstance(dog,Animal))# Trueprint(isinstance(dog,Dog))# Trueprint(issubclass(Dog,Animal))# TruepythonclassVehicle:def__init__(self,brand,model):self.brand=brand self.model=modeldefstart(self):return"车辆启动"definfo(self):returnf"品牌:{self.brand}, 型号:{self.model}"classElectricCar(Vehicle):def__init__(self,brand,model,battery_capacity):# 使用super()调用父类方法super().__init__(brand,model)self.battery_capacity=battery_capacity# 扩展父类方法而不是完全重写definfo(self):# 先获取父类的info结果,再添加子类信息parent_info=super().info()returnf"{parent_info}, 电池容量:{self.battery_capacity}kWh"# 添加子类特有方法defcharge(self):return"电动车正在充电"# 使用tesla=ElectricCar("Tesla","Model 3",75)print(tesla.start())# 车辆启动(继承自Vehicle)print(tesla.info())# 品牌: Tesla, 型号: Model 3, 电池容量: 75 kWhprint(tesla.charge())# 电动车正在充电