类的方法

类的方法有五种:

  1. 实例方法:实例对象的方法,由各实例对象独享
  2. 类方法:类对象的方法,由所有实例对象共享
  3. 自由方法:由类所在命名空间管理,类对象独享
  4. 静态方法:由类对象和实例对象共享
  5. 保留方法: 保留使用,如_len_()

1.实例方法

          def < 方法名>(self, <参数列表>)

          

class Democlass:
    def __init__(self, name): #创建构造函数
        self.name = name       #创建实例属性name
    def lucky(self):            # 创建实例方法lucky
        s = 0
        for c in self.name:
            s+=ord(c)%100
        return s
dc1 = Democlass("老王")
dc2 = Democlass("老李")
print(dc1.name,"的幸运数字是:",dc1.lucky())
print(dc2.name,"的幸运数字是:", dc2.lucky())


运行结果:老王 的幸运数字是: 148
        老李 的幸运数字是: 115

 

2.类方法

  class <类名>

          @classmethod

           def <方法名> (cls, <参数列表>)

  • 类方法至少包含一个参数,表示类对象,建议使用cls
  • @classmethod 是装饰器
  • 类方法只能操作类属性和其他类方法,不能操作实例属性和实例方法
class Democlass:
    count = 0
    def __init__(self,name):
        self.name = name
        Democlass.count +=1
    @classmethod
    def getchrcount(cls):
        s = "零一二三四56789"
        return s[Democlass.count]  #类方法只可以操作类属性,count为类属性
dc1 = Democlass("老王")
dc2 = Democlass("老李")
print(dc1.getchrcount())
print(Democlass.getchrcount())  
  

运行结果: 二
         二

3.自由方法(定义在类的命名空间中的函数,由类对象独享)

     def <方法名>(<参数列表>)

自由方法不需要self或cls这类参数,可以没有参数

自由方法只能操作类属性和类方法,不能操作实例属性和实例方法

自由方法的使用只能使用< 类名>

class Democlass:
    count = 0
    def __init__(self,name):
        self.name = name
        Democlass.count+=1
    def f00():          #创建自由方法
        Democlass.count*=100
        return Democlass.count
dc1 = Democlass("老王")
print(Democlass.f00())

运行结果: 100

4.静态方法

          class < 类名>

               @staticmethod

               def < 方法名>(<参数列表>)

           静态方法只能操作类属性和类方法

class Democlass:
    count = 0
    d
def __init__(self,name):
        self.name = name
        Democlass.count+=1
    @staticmethod
    def f00():          #创建静态方法
        Democlass.count*=100
        return Democlass.count
dc1 = Democlass("老王")
print(Democlass.f00())
print(dc1.f00())



运行结果:100
        10000

5.保留方法

class Democlass:
    def __init__(self,name):
        self.name = name
    def __len__(self):
        return  len(self.name)
dc1 = Democlass("老王")
dc2 = Democlass("kjuj")
print(len(dc1))
print(len(dc2))


运行结果:二
        四

 

posted @ 2020-03-29 20:05  小小鱼鱼儿  阅读(427)  评论(0)    收藏  举报