Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1988字,纯文字阅读大概需要3分钟。
内容图文
-
Python类中的变量有类变量和实例变量之分。
-
类变量:变量绑定在类上,同一个类之间的共享变量,类比于Java中的静态变量static
- 公有变量定义
Java 的定义方式
class Test{ public static class_variable = "123" }
Python3 定义方式
class Test: class_variable = "123"
-
私有变量定义
-
Java 的定义方式
class Test{ private static class_variable = "123" }
-
Python3 定义方式
class Test: __class_variable = "123"
-
- 公有变量定义
-
实例变量:变量绑定在类的实例上,同一个类的不同实例之间不共享,类比于Java中的成员变量
-
公有变量定义
-
Java 的定义方式
class Test{ public instance_variable = "123" }
-
Python3 定义方式
class Test: def __init__(self): self.instance_variable = "123"
-
-
私有变量定义
-
Java 的定义方式
class Test{ private instance_variable = "123" }
-
Python3 定义方式
class Test: def __init__(self): self.__instance_variable = "123"
-
-
-
Python类的方法有普通函数、类函数、静态函数之分
-
方法上不写任何注解(普通函数):这种修饰方式类比于Java中的成员函数的方式,在调用这种函数时会隐式地传递一个指向自身的指针self,通过这个指针可以调用示例变量,类似于Java中使用的this变量
class Test: def __init__(self): self.__instance_variable = "123" def test(self): print(self.__instance_variable) if __name__ == "__main__": t = Test() t.test() # 此种方式调用实例变量将会报错,因为该实例变量是私有变量,不支持外部调用 # print(t.__instance_variable)
-
方法上使用@classmethod注解(类函数):类函数无法访问实例变量,只能访问类变量,这种修饰方式类比于Java中的静态函数,但是又有所不同,调用这种函数的时候会隐式地传递一个类指针cls,通过这个指针可以调用类变量,而Java在成员函数中引用静态变量时是不需要显示指定类来调用静态变量的
class Test: class_variable = "123" def __init__(self): self.__instance_variable = "234" @classmethod def test(cls): print(cls.class_variable) # 此种方式调用实例变量将会报错,因为类函数不能调用实例变量 # print(cls.__instance_variable) if __name__ == "__main__": # 可以实例调用类函数,也可以类直接调用类函数 t = Test() t.test() Test.test()
-
方法上使用@staticmethod注解(静态函数):Python3中的静态函数与Java中的静态函数定义不同,其静态函数绑定在类上,但是不依赖于类变量或其实例变量,因此也不会隐式传递任何指针
class Test: class_variable = "123" def __init__(self): self.__instance_variable = "234" @staticmethod def test(x): # 注:此处已经不再需要设置默认接收指针的变量self或cls,x为调用函数时手动传递的变量 print(x) # 类变量必须通过类来引用,实例变量必须通过实例来引用,下面都是错误的用法,无法直接访问类变量或实例变量 # print(class_variable) # print(__instance_variable) if __name__ == "__main__": # 可以实例调用类函数,也可以类直接调用类函数 t = Test() t.test("233") Test.test("233")
-
原文:https://www.cnblogs.com/soundofcolors/p/11100222.html
内容总结
以上是互联网集市为您收集整理的Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比)全部内容,希望文章能够帮你解决Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。