类方法可以用类对象或者类名直接调用
静态方法也可以用类名或者类对象调用
class Wh():
MYNAME = "我是测试的类属性的值"
def __init__(self, name):
self.name = name
def whtest1(self, test_parameter):
print("whtest1分割线====================================================whtest1分割线")
print("我是wh类里的实例方法111111111111")
print("直接self.name调用实例属性", self.name)
print("Wh.MYNAME调用类属性", Wh.MYNAME)
print("打印whtest1实例方法的参数test_parameter", test_parameter)
print("self.MYNAME调用类属性", self.MYNAME)
print("whtest1分割线====================================================whtest1分割线")
def whtest2(self):
print("whtest2分割线===========================================whtest2分割线")
print("我是wh类里的实例方法2222222222")
print("下面调用实例方法whtest1")
self.whtest1("我是在whtest2里面调用的whtest1实例方法传递的参数 {0}".format(Wh.MYNAME))
print("调用实例方法whtest1完了")
print("whtest2分割线===========================================whtest2分割线")
@staticmethod
def whstatic_test():
print("whstatic_test分割线=====================whstatic_test分割线")
print("我是静态方法")
print("静态方法Wh.MYNAME调用", Wh.MYNAME)
print("whstatic_test分割线=====================whstatic_test分割线")
@classmethod
def class_test(cls):
print("class_test分割线=====================class_test分割线")
print("我是类方法")
print("cls.MYNAME调用打印类属性", cls.MYNAME)
print("Wh.MYNAME调用打印类属性", Wh.MYNAME)
print("class_test分割线=====================class_test分割线")
if __name__ == '__main__':
# 创建实例
print("****************************************************************************")
test = Wh("weisong")
print("****************************************************************************")
# 用创建的实例调用实例方法1
print("*****************************************************************************")
test.whtest1("自己传的whtest1实例方法传递的参数")
print("*****************************************************************************")
# 用创建的实例调用实例方法2
print("*****************************************************************************")
test.whtest2()
print("*****************************************************************************")
# 调用静态方法
print("*****************************************************************************")
Wh.whstatic_test()
print("*****************************************************************************")
# 调用类方法
print("*****************************************************************************")
Wh.class_test()
print("*****************************************************************************")
结果打印
****************************************************************************
****************************************************************************
*****************************************************************************
whtest1分割线====================================================whtest1分割线
我是wh类里的实例方法111111111111
直接self.name调用实例属性 weisong
Wh.MYNAME调用类属性 我是测试的类属性的值
打印whtest1实例方法的参数test_parameter 自己传的whtest1实例方法传递的参数
self.MYNAME调用类属性 我是测试的类属性的值
whtest1分割线====================================================whtest1分割线
*****************************************************************************
*****************************************************************************
whtest2分割线===========================================whtest2分割线
我是wh类里的实例方法2222222222
下面调用实例方法whtest1
whtest1分割线====================================================whtest1分割线
我是wh类里的实例方法111111111111
直接self.name调用实例属性 weisong
Wh.MYNAME调用类属性 我是测试的类属性的值
打印whtest1实例方法的参数test_parameter 我是在whtest2里面调用的whtest1实例方法传递的参数 我是测试的类属性的值
self.MYNAME调用类属性 我是测试的类属性的值
whtest1分割线====================================================whtest1分割线
调用实例方法whtest1完了
whtest2分割线===========================================whtest2分割线
*****************************************************************************
*****************************************************************************
whstatic_test分割线=====================whstatic_test分割线
我是静态方法
静态方法Wh.MYNAME调用 我是测试的类属性的值
whstatic_test分割线=====================whstatic_test分割线
*****************************************************************************
*****************************************************************************
class_test分割线=====================class_test分割线
我是类方法
cls.MYNAME调用打印类属性 我是测试的类属性的值
Wh.MYNAME调用打印类属性 我是测试的类属性的值
class_test分割线=====================class_test分割线
*****************************************************************************