__init__方法
class Phone():
#魔术方法之一:__名字__()
def __init__(self):
print("=====init===")
# Phone类里面的方法:call
def call(self):
print("===price==")
phone1 =Phone()
输出:
=====init===
底层实现流程:
1.phone1 = Phone()利用类创建对象,读到phone()时,首先查找Phone()类。
2.利用Phone类,向内存申请一块和类同样大小的空间。
3.向Phone类中查找有没有__init__方法;若没有,则则将新空间赋值给phone1;
4.若有,则进入__init__方法,执行相应内容,再将内存赋值给对象phone1。
5.__init__中的self为新创建的空间地址,也就是对象phone1。
class Phone():
#魔术方法之一:__名字__()
def __init__(self):
self.brand = "xiaomi"
self.price = 4999
# Phone类里面的方法:call
def call(self):
print("===price==",self.price)
phone1 =Phone()
phone1.call()
phone2 = Phone()
phone2.price = 5999
phone2.call()
其中,self.brand和self.price两句是在执行__init__方法时,在各自的对象内存中动态的创建了各自的属性。
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
def eat(self,food):
print('{}正在吃{}!'.format(self.name,food))
def run(self):
print('{},今年{}岁了!'.format(self.name,self.age))
p1 = Person('小花',18)
p1.eat('肉夹馍')
p1.run()
p2 = Person('小驴',17)
p2.eat('汉堡包')
p2.run()
小花正在吃肉夹馍!
小花,今年18岁了!
小驴正在吃汉堡包!
小驴,今年17岁了!
可以为方法指定参数,那么不同的对象就有不同的属性和方法。参数需要调用时动态传入。