首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈Python之面向对象(五)

让我们先来看一个问题。

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)

运行结果:

总结

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180211G0P24400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券