码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象:类方法,静态方法

时间:2019-10-15 00:13:19      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:ssm   color   方法   pre   改变   sof   ret   登录失败   and   

类方法

@classmethod

  只能有类名调用(对象调用,传给cls参数的也是该对象的所属类).

使用场景:

  1,无需对象参与.
  2,对类中的静态变量进行修改.
  3,在父类中类方法得到子类的类空间,为所欲为.

静态方法

  @staticmethod
  # 1,代码块.清晰.
  # 2,复用性.

# 类方法
class A:
    def func(self):  # 普通方法
        print(self)

    @classmethod  # 类方法
    def func1(cls):
        print(cls)


a1 = A()

a1.func()
A.func(a1)
# 类方法: 通过类名调用的方法,类方法中第一个参数约定俗称cls,python自动将类名(类空间)传给cls.
A.func1()
a1 = A()
a1.func1()  # 对象调用类方法,cls 得到的是类本身.

<__main__.A object at 0x000001DE71EC2E88>
<__main__.A object at 0x000001DE71EC2E88>
<class ‘__main__.A‘>
<class ‘__main__.A‘>

#类方法的应用场景:

  1, 类中 有些方法是不需要对象参与.
class A1:
    name = alex
    count = 1

    @classmethod
    def func1(cls):  # 此方法无需对象参与
        return cls.name + str(cls.count + 1)

# A1.func1(111) 不可取
a1 = A1()
a2 = A1()
print(a1.func1())
print(a2.func1())
print(A1.func1())

alex2
alex2
alex2

# 静态方法

  # 2, 对类中的静态变量进行改变,要用类方法.

  # 3,继承中,父类得到子类的类空间.
class A:
    age = 12
    @classmethod
    def func1(cls):  # 此方法无需对象参与
        # print(cls)
        # 对B类的所有的内容可以进行修改.
        print(cls.age)
        # return cls.name + str(cls.count + 1)

class B(A):
    age = 22
B.func1()

#执行结果:
22

# 不通过类方法,想让我的父类的某个方法得到子类的类空间里面的任意值.
class A:
    age = 12

    def func2(self):
        print(self)  # self 子类的对象,能得到子类 空间的任意值

class B(A):
    age = 22

b1 = B()
b1.func2()
print(B.__dict__)

#执行结果:
<__main__.B object at 0x000001CC98422E48>
{__module__: __main__, age: 22, __doc__: None}

# 静态方法:
#函数
def login(username,password):
    if username == alex and password == 123:
        print(登录成功)
    else:
        print(登录失败...)

login(alex,123)

#静态方法
class A:

    @staticmethod
    def login(username, password):
        if username == alex and password == 123:
            print(登录成功)
        else:
            print(登录失败...)


A.login(alex,1234)

#执行结果
登录成功
登录失败...
# 1,代码块.清晰.
# 2,复用性.

面向对象:类方法,静态方法

标签:ssm   color   方法   pre   改变   sof   ret   登录失败   and   

原文地址:https://www.cnblogs.com/skydragon/p/11674781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!