zoukankan      html  css  js  c++  java
  • python类、类继承

    yield:

    简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。

    def fab(max):
        n,a,b = 0,0,1
        while n<max:
            yield b
            #print b
            a,b = b , a + b
            n = n + 1
    
    for n in fab(5):
        print n

     类:

    class<类名>:

      <语句>

    类的私有属性:
    __private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问
    在类内部的方法中使用时 self.__private_attrs
     
     类的方法
    在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数

    __private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用
    在类的内部调用slef.__private_methods
    类的专有方法:
    __init__  构造函数,在生成对象时调用
    __del__   析构函数,释放对象时使用
    __repr__ 打印,转换
    __setitem__按照索引赋值
    __getitem__按照索引获取值
    __len__获得长度
    __cmp__比较运算
    __call__函数调用
     
    __add__加运算
    __sub__减运算
    __mul__乘运算
    __div__除运算
    __mod__求余运算
    __pow__称方

    #类定义
    class people:
        #定义基本属性
        name = ''
        age = 0
        #定义私有属性,私有属性在类外部无法直接进行访问
        __weight = 0
        #定义构造方法
        def __init__(self,n,a,w):
            self.name = n
            self.age = a
            self.__weight = w
        def speak(self):
            print("%s is speaking:I am %d years old" %(self.name,self.age))
    
    p = people('Tom',10,30)
    p.speak()

    类继承:

    class<类名>(父类名):

      <语句>

    需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法

    类方法的覆写——子类覆盖掉父类的方法
    def 方法名与父类一致
    若是在方法中要使用到父类方法 父类名.方法名

    #继承
    class speaker():
        topic = ''
        name = ''
        def __init__(self,n,t):
            self.name = n
            self.topic = t
        def speak(self):
            print("I am %s,I am a speaker! My topic is %s"%(self.name,self.topic))
    
    class sample(speaker,people):
        a = ''
        def __init__(self,n,a,w,t):
            people.__init__(self,n,a,w)
            speaker.__init__(self,n,t)
    
    test = sample("Tim",25,70,"Python")
    test.speak()#方法名同,默认调用的是在括号中排前的父类的方法
  • 相关阅读:
    java处理图片--图片的缩放,旋转和马赛克化
    Node.JS + MongoDB技术浅谈
    nodejs版本更新问题:express不是内部或外部命令
    解决mongodb的安装mongod命令不是内部或外部命令
    MongoDB Windows环境安装及配置
    WebStorm主题设置
    分页插件PageHelper
    Dubbo入门
    JVM组成
    java 多线程例子
  • 原文地址:https://www.cnblogs.com/dear_diary/p/5718656.html
Copyright © 2011-2022 走看看