25类和对象---类和实例、组合
1、类和对象使用简单例子,python中一切皆对象
数据属性是所有对象共享的
函数属性是绑定给对象用的,绑定到对象的函数调用,会自动传值,把self传给函数
class Student: '''hello cc''' def __init__(self, name, age): self.name = name self.age = age def study(self): print('study....') s = Student('cc',18) print('name:{},age:{}'.format(s.name, s.age)) # # 类内置的特殊属性 print(Student.__dict__) # 类的字典属性{'__init__': <function Student.__init__ at 0x0000007676B512F0>, 'study': <function.. print(Student.__doc__) # 类的文档字符串 hello cc print(Student.__base__) # 类的第一个父类 <class 'object'> print(Student.__bases__) # 类所有父类构成的元组(<class 'object'>,) print(Student.__name__) # 类的名字(字符串) Student print(Student.__module__) #类定义所在的模块,__main__ print(Student.__class__) # <class 'type'>
2、组合
组合:在一个类中把另外一个类的对象作为数据属性
例1:
class Stu: def __init__(self, name, age, grade): self.name = name self.age = age self.grade = grade self.course = [] def __repr__(self): return self.name class Teacher: def __init__(self, name, age): self.name = name self.age = age self.students = [] self.course = [] def __repr__(self): return self.name class Course: def __init__(self, name, price): self.name = name self.price = price def __repr__(self): return self.name cc1 = Teacher('cc1', 30) cc2 = Teacher('cc2', 35) stu1 = Stu('stu1', 18, 'grade2') stu2 = Stu('stu2', 16, 'grade1') stu3 = Stu('stu3', 16, 'grade1') english = Course('english', 10000) python = Course('pyhton', 2000) linux = Course('linux', 3000) cc1.course.append(english) cc2.course.append(python) cc2.course.append(linux) cc1.students.append(stu1) cc1.students.append(stu2) cc1.students.append(stu3) stu1.course.append(python) stu1.course.append(english) for s in cc1.students: print('{}:{}'.format(s, s.course))
例2:
class Garen: #定义英雄盖伦的类,不同的玩家可以用它实例出自己英雄; camp='Demacia' #所有玩家的英雄(盖伦)的阵营都是Demacia; def __init__(self,nickname,aggressivity=58,life_value=455): #英雄的初始攻击力58...; self.nickname=nickname #为自己的盖伦起个别名; self.aggressivity=aggressivity #英雄都有自己的攻击力; self.life_value=life_value #英雄都有自己的生命值; def attack(self,enemy): #普通攻击技能,enemy是敌人; enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。 class Riven: camp='Noxus' #所有玩家的英雄(锐雯)的阵营都是Noxus; def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54; self.nickname=nickname #为自己的锐雯起个别名; self.aggressivity=aggressivity #英雄都有自己的攻击力; self.life_value=life_value #英雄都有自己的生命值; def attack(self,enemy): #普通攻击技能,enemy是敌人; enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。 g1 = Garen('cc') r1 = Riven('dd') print(r1.life_value) g1.attack(r1) print(r1.life_value)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】