您的位置:首页 > 编程语言 > Python开发

python入门3,类,函数,参数

2017-12-30 11:31 453 查看
面向对象

特征:封装,继承,多态

封装:指向程序中的其它部分隐藏对象的具体实现细节的原则

继承:就是继承嘛….python使用多继承

多态:有多种形式,多态意味着就算不知道变量所引用的对象类型是什么,还是能对他进行操作,而他会根据对象类型的不同而表现不同的行为(在java中,多态是指在编译阶段,并不确定变量调用的方法,在运行阶段才会知道)

在effect java中提到公有类不应该直接暴露数据域(data field),也就是属性

声明函数:

def foo(name, value, types):
print(name)
print(value)
print(types)
foo('a', 'b', 'c');
list = ['a', 'b', 'c']
foo(*list)
list.append('d')
foo(*list)  #TypeError: foo() takes 3 positional arguments but 4 were given
a = { 'name':'Mr.zou', 'age':12, 'types': 30}
foo(**a)
a['vv'] = 'xixi'
foo(**a)    #TypeError: foo() got an unexpected keyword argument 'vv'




class Func(object):
"""docstring for Func"""
def __init__(self, name, age,job):
self.__name = name
self.__age = age
self.__job = job

def get_name(self):
return self.__name
if __name__ == '__main__':
f = Func('Mr.zou', 24, 'coder')
print(f.get_name())


说说类方法:

class User:
__isinstance = None
def __init__(self, name, age, job):
self.__name = name
self.__age = age
self.__job = job
def getname(self):
return self.__name
def getage(self):
return selt.__age
def getjob(self):
return self.__job
def __new__(cls, *args, **kwargs):
if not cls.__isinstance:
cls.__isinstance=super(Singleton,cls).__new__(cls,*args,**kwargs)
return cls.__isinstance
def sound(self):
print(self.__name,"can sound")
#__init__():
#__new__():
"""
继承自object的新式类才有__new__
__new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例
__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
若__new__没有正确返回当前类cls的实例,那__init__是不会被调用的,即使是父类的实例也不行
"""
#__getattr__():
#__setattr__():
#__delattr__():
#__iter__():
#__len__():
#__getitem__():
#__setitem__():
#__delitem__():
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 面向对象