# python中一切皆为对象,且python3统一了类与类型的概念,类型就是类 # 特征即数据属性,技能即方法属性,特征与技能的结合体就一个对象。 # 从一组对象中提取相似的部分就是类 # 对象是特征(变量)与技能(函数)的结合体 # 而类是一系列对象共同的特征与技能的结合体 # 类有两种作用:属性引用和实例化 # 属性引用(类名.属性) # >>> Garen.camp #引用类的数据属性,该属性与所有对象/实例共享 # 'Demacia' # >>> Garen.attack #引用类的函数属性,该属性也共享 # <function Garen.attack at 0x101356510> # >>> Garen.name='Garen' #增加属性 # >>> del Garen.name #删除属性 # 类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征 # 对象是关于类而实际存在的一个例子,即实例 # # >>> g1=Garen('草丛伦') #类实例化得到g1这个实例,基于该实例我们讲解实例相关知识 # >>> type(g1) #查看g1的类型就是类Garen # <class '__main__.Garen'> # >>> isinstance(g1,Garen) #g1就是Garen的实例 # True # 对象/实例本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法 # 对象的绑定方法的特别之处在于:obj.func()会把obj传给func的第一个参数。也就是自动传值功能 # 对象之间的交互 # class Garen: # camp='Demacia' # def __init__(self,name,aggressivity=100,life_value=200): # self.name=name # self.aggressivity=aggressivity # self.life_value=life_value # def attack(self,enemy): # enemy.life_value-=self.aggressivity # class Riven: # camp="Noxus" # def __init__(self,name,aggressivity=100,life_value=300): # self.name=name # self.aggressivity=aggressivity # self.life_value=life_value # def attack(self,enemy): # enemy.life_value-=self.aggressivity # g1=Garen('z') # r1=Riven('x') # print(r1.life_value) # g1.attack(r1) # print(r1.life_value) # 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 # 而类有两种属性:数据属性和函数属性 # 其中类的数据属性是共享给所有对象的 # 创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性