vim day6-5.py
#!/usr/bin/python # -*- coding:utf-8 -*- class Person(object): def __init__(self,name): #初始化函数,其实初始化已经执行了 self.name = name def say_name(self): print "My name is %s" % self.name p1=Person("gf1") #实例化 p2=Person("gf2") p1.say_name() #调用类里面的某一个功能
类是一个模板不应用就是一个静态的
实例化会生成一个对象,对象是实体,对象是真实存在的
实例化是一个动作
给类赋予一个吃的功能
vim day6-5.py
#!/usr/bin/python # -*- coding:utf-8 -*- class Person(object): def __init__(self,name): #初始化函数,其实初始化已经执行了 self.name = name def say_name(self): print "My name is %s" % self.name def eat(self): print "I am eating..." p1=Person("gf1") #实例化 p2=Person("gf2") p1.say_name() p1.eat()
执行就在吃了
调用p2.eat()也显示在吃,但是到底是谁在吃不知道
vim day6-6.py
#!/usr/bin/python # -*- coding:utf-8 -*- class Person(object): def __init__(self,name): #初始化函数,其实初始化已经执行了 self.name = name def say_name(self): print "My name is %s" % self.name def eat(self,n): print "%s is eating..." %n p1=Person("gf1") #实例化 p2=Person("gf2") p1.say_name() p1.eat("gf1") p2.eat("gf2")
这样需要在定义的时候定义一个参数n
vim day6-7.py
#!/usr/bin/python # -*- coding:utf-8 -*- class Person(object): def __init__(self,name): #初始化函数,其实初始化已经执行了 self.name = name #p1.name = 'gf1'把局部变量name赋值给self.name 因为下面可能有多个方法调用,局部变量在这里执行一次会失效 def say_name(self): print "My name is %s" % self.name def eat(self): print "%s is eating..." %self.name p1=Person("gf1") #实例化 p2=Person("gf2") p1.say_name() p1.eat() p2.eat()
其实在实例化的时候已经赋值了
这里self代表实例本身 p1调用时代表p1 p2调用时代表p2
PS:类的方法(类函数)与普通的函数只有一个特别的区别:他们必须有一个额外的第一个参数名称
,但是在调用这个方法的时候你不必为这个参数赋值,Python会提供这个值.这个特别的变量指对象
本身,按惯例它的名称是self
类中定义的函数这里不叫函数,叫方法.