反射:
有:demo.py 里面有 函数Foo()
str1 = ‘demo‘
str2 = ‘Foo‘
module = __import__(str1)
func = getattr(module,str2)
实例:通常适用于url
代码目录结构为: backend包 下面又account.py模块 里面又login函数
data = raw_input(‘请输入地址:‘) #account/login
array = data.split(‘/‘)
userspance = __import__(‘backend.‘+array[0])
model = getattr(userspance,array[0])
func = getattr(model,arry[1])
func()
面向对象:
类:
class People(object):
name=‘name‘ 这是属于类的变量,类直接可以访问。
dict={} 字典是所有实例共享一份数据,共有
def __init__(self,name,age,job): 初始化函数(构造函数), 定义参数.这里的变量是私有的
self.name=name 加self是变成实例变量,其他函数也能调用
self.age=age
self.job=job
self.__name=name 私有变量,外部不能访问
def walk(self): 都需要加self(self指的是实例本身)
print "i am walking..."
self.__breath() 内部可以调用
def talk(self):
print "talking with sb...",self.name
def __breate(self): 私有方法外部不能访问,对象不能访问
pass
p1=People(‘dengminhui‘,‘10‘,‘enginner‘) 实例化,传入参数
p1.walk()
p1.talk()
p1.__breath 不能调用
强行调用私有变量 p1.__People.__name
类的继承:
class SchoolMember(object):
def __init__(self,name,age,sex):
self.name=name
self.age=age
selef.sex=sex
def func(self):
pass
继承
class Student(SchoolMember):
def __init__(self,name,age,sex,grade):
SchoolMember.__init__(self,name,age,sex) 这里是继承父类的变量
self.grade=grade 重写构造函数后,这里是添加的变量
def func(self):
SchoolMember.tell(self) 函数重写
添加code
多继承
class School(object):
def __init__(self,name,tel,addr):
self.tel=tel
self.addr=addr
self.stu_list=[]
self.tech_list=[]
class Student(SchoolMember,School):
静态方法:
class MyClass(object):
age = 22
def __init__(self):
self.name = "a"
def sayhi(self):
print "---sayhi 1"
@staticmethod #静态方法 跟类没什么关系,不需要实例化即可调用,类的工具包
def sayhi2(): 不需要加self
print "---sayhi 2",self.name,self.age-----------> self对象不会传进来,所以都不能访问调用
@classmethod 不需要实例化即可调用,不能访问实例数据。。。。实例化也可以调用属性
def sayh3(self):
print "---sayhi 3" sself.name self.age 不能访问self.name,只能访问类属性
@property 把一个静态方法变成静态属性
def sayh4(self):
print "----sayhi4"
return ‘test‘
调用:
MyClass.syahi2()
m=MyClass()
m.sayh4 ------> 结果会是 test
print m.__dict__ __dict__方法会把对象的所有属性全部打印出来。
新式类和经典类:
原文地址:http://9408347.blog.51cto.com/9398347/1880644