让我们先来看一个问题。
if __name__ == '__main__'是什么意思?答:python中,当打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介绍一下它的作用,模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是也可以像一个标准的程序那样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。一个.py文件,如果是自身在运行,那么他的__name__值就是"__main__";如果它是被别的程序导入的(作为一个模块),比如:import re那么,他的__name__就不是"__main__"了。所以,在.py文件中使用这个条件语句,可以使这个条件语句块中的命令只在它独立运行时才执行
类的展现
对象转换成字符串的魔术方法:__str__ 把对象转换成适合人看的字符串 __repr__ 把对象转换成适合机器看的字符串 __unicode__
__dir__ 展现对象属性魔术方法
Tips:快速注释 ctrl+/
实例演示:
# -*- coding:utf-8 -*-
classProgramer(object):
def__init__(self,name,age):
self.name = name
ifisinstance(age,int):#判断一个变量的类型
self.age = age
else:
raiseException('age must be int')
def__str__(self):
return'%s is %s years old '% (self.name,self.age)
def__dir__(self):
returnself.__dict__.keys()
if__name__ =='__main__':
p = Programer('Ghost',22)
print(p)
print(dir(p))
代码结果:
类的属性控制
实例演示:
# -*- coding:utf-8 -*-
classProgramer(object):
def__init__(self,name,age):
self.name = name
self.age = age
def__getattribute__(self,name):
returnsuper(Programer,self).__getattribute__(name)
def__str__(self,name,value):
self.__dict__[name] = value()
if__name__ =='__main__':
p = Programer('Ghost',22)
print(p.name)
运行结果:
总结
领取专属 10元无门槛券
私享最新 技术干货