-
if __name__ == '__main__'是什么意思? 答:python中,当打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介绍一下它的作用,模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是也可以像一个标准的程序那样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。 一个.py文件,如果是自身在运行,那么他的__name__值就是"__main__"; 如果它是被别的程序导入的(作为一个模块),比如: import re 那么,他的__name__就不是"__main__"了。 所以,在.py文件中使用这个条件语句,可以使这个条件语句块中的命令只在它独立运行时才执行查看全部
-
定义类的属性 1.直接在类里定义 class Programer(object): sex='male' 会被所有类的对象使用 2.在构造函数里定义 class Programer(object): def __init__(self,name,age): self.name =name self.age = age 3.访问的控制 class Programer(object): def __init__(self,name,age): self.name =name ----->可以公开访问 self._age = age ------>私有属性,还可被对象访问 self.__weight = weight ---->不可被类外访问,可通过实例名._类名__weight访问 4..__dict__#查看对象属性的情况 programer=Programer('Albert',25,80) print programer.__dict__ 打印对象属性发现是{'_age':25,'_Programer__weight':70,'name':'Albert'}查看全部
-
没用过python,但是老师重原理,感觉还是挺不错的查看全部
-
类和运算符 1.利用魔术方法可以使运算符被Python的标准语法支持 2.比较运算符 __cmp__(self,other) 比较 __eq__(self,other) 处理等于 __lt__(self,other) 小于 __gt__(self,other) 大于 3.数字运算符 __add__(self,other) 加 __sub__(self,other) 减 __mul__(self,other) 乘 __div__(self,other) 除 4.逻辑运算符 __or__(self,other) 或 __and__(self,other) 和查看全部
-
函数与方法的区别
查看全部 -
返回一个对象
获取对象的类型
查看全部 -
类,是面向对象的一种表示(封装性) 类的组成:属性 + 功能 类的特性:继承、封装、多态 继承类型(子类从属与父类, 允许扩展): 单重继承, 多重继 多态: 允许重构功能函数
查看全部 -
面向对象的基本单元是对象,数据和功能具有复用性、扩展性、灵活性。
查看全部 -
子类可以继承父类的属性,添加属性,覆盖父类的属性,父类不能使用子类 的属性,也能添加,不能覆盖
查看全部 -
#Python进阶
Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。
查看全部 -
@classmethod方法,类似于java的静态方法,直接用类名.方法()调用
@property方法,把方法看成是类的属性,调用类的实例对象.方法
查看全部 -
#!/usr/bin/env /python #-*- coding: utf-8 -*- class Programer(object): hobby = 'Play Computer' def __init__(self,name,age,weight): self.name = name self._age = age self.__weight = weight @classmethod def get_hobby(cls): return cls.hobby @property def get_weight(self): return self.__weight def self_introduction(self): print 'My name is %s \n I am %s years old\n '%(self.nameB,self._age) class BackendProgramer(Programer): def __init__(self,name,age,language): super(BackendProgramer,self).__init__(name,age,weight) self.language = language if __name__ == '__main__': programer = BackendProgramer('Albert',25,80,'Python') print dir(programer) print programer.__dict__ print type(programer) print isinstance(programer,Programer)
查看全部 -
设置对象属性:通常不必定义,调用从父类继承的方法
def __setattr__(self, name, value): self.__dict__[name] = value
查询对象属性:
__getattr__(self, name):访问属性在默认情况下没有被查询到的情况下调用
__getattribute__(self, name):每次访问属性一定会调用,容易引起无限递归,最好调用父类的getattribute
删除对象属性
__delattr__(self, name)
class Programer(object): def __init__(self, name, age): self.name = name self.age = age def __getattribute__(self, name): return super(Programer, self).__getattribute__(name) def __setattr__(self, name, value): self.__dict__[name] = value if __name__ = '__main__': p = Programer('Albert', 25) print n.name
查看全部 -
在print的过程中,将对象转换为字符串,包括三种方法:
__str__:转换成适合人看的字符串
__repr__:转换成适合机器看的字符串
__unicode__
展现对象属性:__dir__
class Programer(object): def __init__(self, name, age): self.name = name if isinstance(age, int): self.age = age else: raise Exception('age must be int') def __str__(self): return '%s is %s years old' % (self.name, self.age) def __dir__(self): return self.__dict__.keys() if __name__ = '__main__': p = Programer('Albert', 25) print p print dir(p)
查看全部 -
构造对象的过程:
首先调用__new__方法创建类的对象:def __new__(cls),通常不必定义(继承父类,父类会创建类对象),返回一个类的初始对象
将返回的对象交给__init__,对属性进行设置:def __init__(self)
class Programer(object): def __new__(cls, *args, **kwargs): #改写new方法 print 'call __new__ method' print args return super(Programer, self).__new__(cls, *args, **kwargs) def __init__(self, name, age): print 'call __init__ method' self.name = name self.age = age if __name__ = '__main__': programer = Programer('Albert', 25) print programer.__dict__
查看全部
举报
0/150
提交
取消