Hello,大家好,我是乔乔白术,今天是带来面向对象的第二篇内容。今天带来的是面向对象中的魔法方法,想了解之前的内容,可以点击上面的合计,里面就有详细内容。
魔法方法:
魔法函数名字是固定的。一般情况下我们不需要通过明显的方式调用它们,但是它们会在特定阶段自动执行。
例如
__init__()
__str__()
注意: _(这是一个_)__(是连个_)只不过最后连用看不出来,但是要记住。
__init__函数,它可以在实例化对象的时候修改属性的值。
我们看个例子
class Rectangle:
length = 0
width = 0
def __init__(self, length, width):
self.length = length
self.width = width
def area(rect):
return rect.length * rect.width
def perimeter(rect):
return 2 * (rect.length + rect.width)
rect = Rectangle(3,4) # 当创建对象时,__init__函数被自动调用,3和4会创给length和width.
print(rect.length,rect.width)
print(rect.area())
魔法函数写在类里面,所以init函数的至少有一个参数self。
通过参数给要修改的属性传参,一般参数名往往和属性名一致
一旦写了__init__函数,并且__init__函数除了self以外还有其他参数,就需要为__init__函数除了self以外的参数传入值。
也可以给__init__函数的参数设置默认值。
__str__函数,该函数要求返回一个字符串,这个字符串的信息要能够把对象的信息组织起来,
当我们使用print函数打印对象的时候,实际上打印的就是__str__函数返回的字符串。
class Rectangle:
length = 0
width = 0
def __init__(self, length=0, width=0):
self.length = length
self.width = width
def area(rect):
return rect.length * rect.width
def perimeter(rect):
return 2 * (rect.length + rect.width
def __str__(self):
return '长方形的长是' + str(self.length) + ',宽是' + str(self.width)
rect = Rectangle(3, 4)
print(rect)
这就是魔法方法相关的内容,这部分我个人觉得还是需要自己多多练习,所以如果还是不明白,就将这上面的代码粘贴到你的编辑器里,然后运行一下,多看看,多试试,就理解了。
明天将带来面向对象的封装相关内容,大家多多期待哟!