• python面向对象之方法


    类成员:字段+方法+属性

     

    字段:普通(实例对象,每个对象保存一次)+静态(全局变量,只保存一次,所有方法共享)

    方法:普通方法(实例方法:self.fun())+类方法(@classmathod)+静态方法(所有方法分类)

    属性:方法属性

    #1普通方法:(使用较多)

    #encoding=utf-8

    class Foo:

     

    def __init__(self, name):

    self.name = name

     

    def ord_func(self):

    """ 定义普通方法,至少有一个self参数 """

     

    # print self.name

    print u'普通方法'

    #2类方法:(不能使用实例)

    @classmethod

    def class_func(cls):

    """ 定义类方法,至少有一个cls参数 """

     

    print u'类方法'

    #3静态方法:(将分类)(不能使用实例)

    @staticmethod

    def static_func():

    """ 定义静态方法 ,无默认参数"""

     

    print u'静态方法'

     

    # 调用普通方法:实例+.+方法

    f = Foo("gloryroad")

    f.ord_func()

     

    # 调用类方法:类+.+方法

    Foo.class_func()

     

    # 调用静态方法:

    Foo.static_func()

     实例:

    将两个文件操作方法,一个改成类方法,一个改成静态方法,再加上实例方法,读取文件全部

     

    #coding=utf-8

    class rw(object):

    #构造函数--构造实例的函数,不能被类方法或者静态方法引用参数

    # def __init__(self,mydir):

    # self.mydir=mydir

    #追加写文件*类方法

    @classmethod

    def w(cls,path,content):

    with open(path.decode("utf-8"),"a") as fp:

    fp.write(content+" ")

    #读指定行文件内容*静态方法

    @staticmethod

    def r(path,linenum):

    lineno=0

    with open(path.decode("utf-8"),"r") as f:

    for line in f:

    lineno+=1

    if linenum==lineno:

    return line

    return ""

    fh=rw("e:\a.txt")

    rw.w("e:\a.txt","hezyy")

    print rw.r("e:\a.txt",2)

    三个方法区别:

    类方法可以被类对象或实例调用,实例方法只能被实例调用,它

    只属于类的单个实例拥有,静态方法两者都能调用,它在类和实

    例间共享。Python实现了一定的灵活性使得类方法和静态方法,

    都能够被实例和类二者调用。

    所以三者主要区别在于参数传递上的区别,实例方法隐含传的参

    数是类实例self,而类方法隐含传递的参数是类本身cls,而静态方

    法无隐含参数,主要为了类实例也可以直接调用静态方法

     

     

  • 相关阅读:
    20210312
    20210311
    20210310
    例5-1
    例5-2
    例4-12-2
    例4-12
    例4-11
    例4-10
    例4-9
  • 原文地址:https://www.cnblogs.com/zyy98877/p/8536869.html
Copyright © 2020-2023  润新知