类方法classmethod,静态方法staticmethod

# # # # 类方法
# # # class A:
# # #     def func(self):   # 普通方法
# # #         print(self)
# # #
# # #     @classmethod   # 类方法
# # #     def func1(cls):
# # #         print(cls)
# # # a = A()
# # # a.func()
# # # A.func(a)
# # # # <__main__.A object at 0x00000208AE3DB400>
# # # # <__main__.A object at 0x00000208AE3DB400>
# # # A.func1()  #<class '__main__.A'>
# # # # 类方法:通过类名调用的方法,类方法中第一个参数将=约定俗称为cls,python自动将类名传递给cls
# # # a1 = A()
# # # a.func1()  # 通过对象调用类方法,cls是对象本身
# # #
# # # 类方法的应用场景
# # #1 类中有些方法不需要对象参与
# # class A:
# #     name = "dudu"
# #     count = 1
# #
# #     # def func(self):
# #     #     return A.name + str(A.count + 1)
# #     @classmethod
# #     def func(cls):
# #         return cls.name + str(cls.count + 1),cls
# #
# # class B(A):
# #     pass
# #
# # print(B.func())
# # # print(A.func(111))  # 需要传入一个无意义参数,不可取
# #
# # # a = A()
# # # print(a.func()) # 这里使用对象来改版了静态字段,虽然可以操作,但是不方便阅读。所以使用类方法
# # print(A.func())
#
# # 2 对类中静态变量进行改变时需要用到
# #3 继承中父类得到子类的类空间
# # # 不通过类方法,父类得到子类的类空间里面的任意值
# # class A:
# #     age = 99
# #
# #     def func(self):
# #         print(self)
# #         print(self.age)
# #
# # class B(A):
# #     age = 22
# #
# # b= B()
# # b.func()
# class A:
#     age = 99
#     @classmethod
#     def func(cls):
#         print(cls)
#         print(cls.age)
#
# class B(A):
#     age = 22
#
# B.func()
# # 通过类方法不止可以查,还可以改

# # 静态方法,不传入self但可以传入其他参数,作用与单独定义函数以相试,但更加清晰
class A:
    @staticmethod
    def func(a):
        print("666")
        print(a)
A.func(44)

# 代码块清晰,复用性

 

posted @ 2019-03-25 12:05  杨fj  阅读(110)  评论(0编辑  收藏  举报