在创建类定义方法的时候self参数
哪一个对象调用的方法,self就是哪一个函数对象的引用;在封装的方法内部,self就表示当前调用当法对象自己,在调用的时候就不必传递self参数(定义的时候,第一个参数必须是self)
class Cat:
def __init__(self,name,color):
self.name = name
self.color = color
def get_name(self):
print('name is %s' %self.name)
def get_color(self):
print('color is %s' %self.color)
tom = Cat('Tom','blue')
erpang = Cat('pang','yellow') # 实例化两个对象
#两个对象是使用同一个类创建出来的,但是其数据不一致,相互之间没有关系
tom.get_color() # 当对象调用方法的时候,其中self参数就是调用方法的对象本身
tom.get_name()
erpang.get_color()# 当对象调用方法的时候,其中self参数就是调用方法的对象本身
erpang.get_name()
输出结果:
color is blue
name is Tom
#当调用方法的对象是tom的时候,self参数就是引用的该对象,输出都是实例化该对象的时候,设置的属性
color is yellow
name is pang
#当调用方法的对象是erpang的时候,self参数就是引用的该对象,输出都是实例化该对象的时候,设置的属性
初始化方法__init__
这个初始化方法是内置方法,是专门用来定义一个类具有哪些属性和方法的。
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去
注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去。
使用:类名() 就可以创建一个对象,在创建对象的时候,python解释器会自动执行以下操作:
1.为对象在内存中分配空间–创建对象;
2.调用初始化方法为对象的属性设置初始值。
在创建对象的时候就设置对象的属性。使用默认的初始化方法对属性进行设置。
1.把希望设置的属性值,定义成__init__方法的参数
2.在方法内部使用self.属性名 = 形参 接收外部传递的参数
3.在创建对象的时候,使用类名(属性)调用
class fruits():
def __init__(self, new_name): ##初始化方法
self.name = new_name
def sweet(self):
print('%s味道很甜' %(self.name))
def colour(self):
print('%s颜色是红色' %(self.name))
#print(fruits()) #调用函数,显示内存地址
#创建一个对象
apple = fruits('Apple')
print(apple) #调用函数,显示内存地址
apple.colour()
apple.sweet()
banana = fruits('Banana')
print(banana)
banana.sweet()
banana.colour()
str方法
希望使用print输出对象变量的时候,能够打印自定义内容就可以利用__str__这个内置的方法了。但是输出的内容只能是字符串类型。
使用print输出对象变量时候,默认情况会输出这个变量引用的对象是由哪一个类创建的对象以及在内存中的地址
默认输出:
class fruits():
def __init__(self, new_name):
self.name = new_name
def __str__(self): #返回的必须是一个字符串
return '我是%s' %(self.name)
def sweet(self):
print('%s味道很甜' %(self.name))
def colour(self):
print('%s颜色是红色' %(self.name))
#print(fruits()) #调用函数,显示内存地址
#创建一个对象
apple = fruits('Apple')
print(apple) #显示__str__函数返回值
apple.colour()
apple.sweet()
banana = fruits('Banana')
print(banana)
banana.sweet()
banana.colour()