Python---类方法

# 类方法  
# 1.类方法如何调用类属性
"""
class numA():
    s1 = "两点"
    @classmethod
    def fun1(cls):
        print("我是fun1"+cls.fun1())

# 调用
numA.s1()
原因:第八行 第十一行
# 报错TypeError: 'str' object is not callable 注意
报错解决办法:需要把fun1方法更改为实例方法,而不是类方法  因为类方法需要使用cls参数来访问类的属性和方法,而实例方法不需要
"""


class ClassA():
    s1 = "两点"

    @classmethod
    def fun1(cls):
        print("我是fun1" + cls.s1)


"""
想要调用类属性:需要用 @classmethod 声明该方法是类方法 
类方法想要使用类属性,在第一个参数中,需要写上 cls , cls 是 class 的缩写
其实意思就是把这个类作为参数,传给自己,这样就可以使用类属性了。
类属性的使用方式就是 cls.变量名
注意:classmethod、cls不能省去 省了就会报错
"""

# 调用方法 如果这样ClassA.s1() 这不傻子行为吗
ClassA.fun1()


# 2.类方法传参
# 很简单,跟普通函数一样,直接加参数就OK了

class ClassA():
    s1 = "两点"

    @classmethod
    def fun1(cls, age):  # 定义了一个age参数
        print("我是fun1" + cls.s1)
        print("年龄:" + str(age))


ClassA.fun1(18)  # 多一个参数


# 输出
# 我是fun1两点
# 年龄:18

# 3.从内部修改类属性
class ClassA():
    s1 = "两点"

    @classmethod
    def fun1(cls):
        print("(未修改)我是fun1" + cls.s1)
        cls.s1 = input('请输入修改后的内容:')  # 修改
        print('修改后的s1值是' + cls.s1)
        cls.s2 = input('新增类属性s2,请赋值')
        input('修改后的s2值是'+ cls.s2)


ClassA.fun1()

# 3.从外部修改类属性

class ClassA():
    s1 = "两点"

    @classmethod
    def fun1(cls):
        print("我是fun1" + cls.s1)

ClassA.fun1()
ClassA.s1 = input('please input s1 values:')
ClassA.fun1()

ClassA.s2 = input('please input add s2 values:')
print(ClassA.s2)


你可能感兴趣的:(python,前端)