python中__init__和self以及‘__main__’

python中__init__和self以及‘main

1、关于__main__

Python和java程序不同,不需要主程序来进行控制运行,,python执行都是从头执行到尾。
python中的很多程序都有这样一段:

1 if __name__ == '__main__':
2     statements

这段代码的主要作用主要是让该python文件既可以独立运行,也可以当做模块导入到其他文件。当导入到其他的脚本文件的时候,此时__name__的名字其实是导入模块的名字,不是’main’, main代码里面的就不执行了。

如果写一段程序 test_main.py:

def fun():
	print('this is fun')
if __name__ == '__main__':
	fun()
	print('this is main')

执行时,得到

>>>
this is fun
this is main

此结果是执行了test_main.py的结果,但是如果将test_main.py作为一个模块引入:
>>>import test_main
得到结果就不是这样,执行test_main.py之后得到

>>>test_main.fun()
>this is fun

可以发现,‘main’中的部分并没有执行。

2、关于__init__和self

由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。以学生类为例,通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:

class student(object):
def __init__(self,name,score):
	self.name = name
	self.score = score

注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。可以理解为初始化。

有__init__方法,创建实例的时候,就不能传入空参数,必须传入与__init__方法匹配的参数,但是self不需要传,Python解释器自己会把实例变量传进去:


>>>grade = student('Jason Bourn',99)
>>>grade.name
'Jason Bourn'
>>>grade.score
99

和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。
除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数.

参考文章

https://blog.csdn.net/fisherming/article/details/93468969
https://www.cnblogs.com/rianley/p/9013905.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值