IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    python学习之路之实例学习005面向对象之类成员

    Vlix_Liu发表于 2015-12-20 12:19:52
    love 0

     

    1、字段 (普通字段,静态字段)

    字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同

    普通字段,存在对象中,通过对象访问
    静态字段,存在类中,通过类名访问
    
    静态字段的又一种用法,当需要访问多个方法中的普通字段,但是这些普通又都是相同的时候,我们就可以把它定义在类中,成为静态字段
    class Person(object):
        company = 'chuchujie'  #静态字段
    
        def __init__(self,name,age,sex):
            self.name = name  #普通字段
            self.age = age
            self.sex = sex
    
    # 访问静态字段
    print Person.company
    
    #访问普通字段
    P1 = Person('allen','25','male')
    print P1.age

    2、方法 (普通方法、类方法、静态方法)

    方法包括: 普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同

    普通方法,通过对象触发,对象执行方法时自动把自己当作参数赋值给self(self是形式参数)
    
    类方法,需要通过@classmethod装饰器装饰,同时方法的第一个参数是 “cls”
           通过类触发,类对象执行时自动把自己当作参数传给cls
    
    静态方法,没有默认参数(可以加任何参数)
    class Person(object):
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def f1(self):
            print "f1"
    
        @classmethod    
        def f2(cls):    #类方法
            print "f2"
    
        @staticmethod    
        def f3():      #静态方法
            print "f3"
    
    #普通方法执行:
    P1=Person()
    P1.f1()
    
    #类方法执行:
    Person.f2()
    
    #静态方法执行:
    Person.f3()
    总结:
    
    普通方法,对象触发,至少一个参数(self),也可以加其他参数
    类方法,类触发,只能有一个参数且只能是cls参数,不能为其他参数(如果你想是其他参数也是可以,但是告诉你这样做是不规范的,所以我们认为只能是cls参数,cls 表示class)
    静态方法,可以加任意参数
    
    对于调用:
    
    普通方法: 对象调用 
    类方法 和 静态方法: 类调用
    
    对于参数:
    
         普通方法: 至少一个self
         类方法: 只能一个参数,cls
         静态方法: 任意参数

    3、属性

    普通属性:在类方法上面加上@property装饰器,就变成了属性

    属性其实是普通方法的变种(python中,属性还用的特别少,因为功能还不够完善,对于其他语言,其他语言用的比较多了)

    属性的定义有两种方式:

    装饰器: 在方法上加上装饰器
    静态字段: 在类中定义值为property对象的静态字段

     



沪ICP备19023445号-2号
友情链接