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

面向对象
特征:封装,继承,多态
封装:指向程序中的其它部分隐藏对象的具体实现细节的原则
继承:就是继承嘛….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__():
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值