吐槽:学习面向对象就像你追一个女神一样,刚刚有点感觉了,过几天又陷入绝望的感觉,很蛋疼。
类的语法
class Person(object): print("learning class") test = Person() #test就是类Person的实例化对象 #实例化,就是以Person类为模板,在内存里开辟一块空间,存上
然后想加点东西,是谁在学习类。
class Person(object): def __init__(self,name): self.name = name def learng(self): print(self.name,"is learning class") test = Person("Jhon") test.learng() #类实例化后就可以调用类中的方法了 #test就是类Person的实例化对象 #实例化,就是以Person类为模板,在内存里开辟一块空间,存上数据,赋值成一个变量名
为什么会有__init__?为什么有self? what happend?看下面代码
class Person(object): def __init__(self,name): self.name = name def learng(self): print(self.name,"is learning class") print(Person) # test = Person("Jhon") # test.learng() #类实例化后就可以调用类中的方法了 #test就是类Person的实例化对象 #实例化,就是以Person类为模板,在内存里开辟一块空间,存上数据,赋值成一个变量名
打印结果如下:
<class '__main__.Person'>
这说明即使类不实例化,这个Person类本身也是已经存在内存里的。如果实例化了?会有什么反应了?
根据图我们得知,其实self就是实例本身!实例化python会自动把这个实例本身通过self参数传进去。
趁热打铁,接下来分解一下下面代码分别是什么意思
class Role(object): #定义一个类, class是定义类的语法,Role是类名,(object)是新式类的写法,必须这样写,以后再讲为什么 def __init__(self,name,role,weapon,life_value=100,money=15000): #初始化函数,在生成一个角色时要初始化的一些属性就填写在这里 self.name = name #__init__中的第一个参数self,和这里的self都 是什么意思? 看下面解释 self.role = role self.weapon = weapon self.life_value = life_value self.money = money
上面的这个__init__()叫做初始化方法(或构造方法),在类被调用时,这个方法会自动执行,进行一些初始化的动作,所以我们这里写的__init__(self,name,role,weapon,life_value=100,money=15000)就是要在创建一个角色时给它设置这些属性,那第一个self是干毛用的呢?
初始化一个角色,就需要调用类一次:
r1 = Role('Alex','police','AK47’) #生成一个角色 , 会自动把参数传给Role下面的__init__(...)方法 r2 = Role('Jack','terrorist','B22’) #生成一个角色
未完待续。。。。