一旦进入面向对象的编程(OOP),Python方法通常会造成混乱。本指南介绍了Python中的三种主要方法。
Python中的三种方法
Python中有三种方法:实例方法,静态方法和类方法。
知道基本的Python脚本并非总是需要区别,但是一旦进入OOP ,差异可能会带来很大的改变。
如果您是Python的新手,或者只是想尝试而无需安装任何东西,请确保您访问了这些在线交互式Python shell。
开始之前:了解装饰器模式
在查看差异之前,了解称为装饰器模式或简称为的设计模式很重要。装饰器。
装饰器听起来很复杂,但没有什么可担心的。装饰器只是简单的功能。您可以自己编写它们,也可以使用库或Python标准库中包含的内容。
就像任何函数一样,装饰器执行任务。此处的区别是装饰器应用逻辑或更改其他功能的行为。它们是重用代码的绝佳方法,并且可以帮助将逻辑分离为个人关注的问题。
装饰器模式是Python定义静态方法或类方法的首选方法。这是在Python中的样子:
class DecoratorExample: """ Example Class """ def __init__(self): """ Example Setup """ print('Hello, World!') @staticmethod def example_function(): """ This method is decorated! """ print('I\'m a decorated function!') de = DecoratorExample()de.example_function()
装饰器必须紧接在函数或类声明之前。它们以 @ 符号开头,与普通方法不同,除非传入参数,否则不必在最后加上括号。
可以组合多个装饰器,编写自己的代码,并将它们也应用于类,但是对于这些示例,您无需执行任何操作。
Python中的实例方法
实例方法是Python类中最常见的方法类型。之所以这样称呼它们,是因为它们可以访问其实例的唯一数据。如果您有两个对象分别是通过汽车类创建的,则它们每个都可能具有不同的属性。它们可能具有不同的颜色,引擎大小,座位等。
实例方法必须具有 self 作为参数,但是您不必每次都传递此参数。 。 Self是另一个Python特殊术语。在任何实例方法中,您都可以使用self访问类中可能存在的任何数据或方法。
最后,由于实例方法是最常见的方法,因此不需要装饰器。除非您另行告诉Python,否则您创建的任何方法都会自动创建为实例方法。
以下是示例:
class DecoratorExample: """ Example Class """ def __init__(self): """ Example Setup """ print('Hello, World!') self.name = 'Decorator_Example' def example_function(self): """ This method is an instance method! """ print('I\'m an instance method!') print('My name is ' + self.name) de = DecoratorExample()de.example_function()
可以访问 name 变量通过自己。请注意,调用 example_function 时,您不必传递self-Python会为您进行自我传递。
Python中的静态方法
静态方法是在某种程度上与类相关的方法,但不需要访问任何特定于类的数据。您不必使用 self ,甚至不需要实例化实例,只需调用您的方法即可:
class DecoratorExample: """ Example Class """ def __init__(self): """ Example Setup """ print('Hello, World!') @staticmethod def example_function(): """ This method is a static method! """ print('I\'m a static method!') de = DecoratorExample.example_function()
@staticmethod 装饰器用于告诉Python该方法是静态方法。
静态方法对于实用程序功能非常有用,它们可以独立执行任务。他们不需要(也不能)访问班级数据。它们应该是完全独立的,并且只能与作为参数传入的数据一起使用。您可以使用静态方法将两个数字加在一起,或打印给定的字符串。
Python中的类方法
类方法是要知道的第三种也是最后一种OOP方法类型。类方法知道其类。它们无法访问特定的实例数据,但是可以调用其他静态方法。
类方法不需要 self 作为参数,但是它们确实需要名为< strong> cls 。这代表 class ,与self一样,它会自动由Python传递。
Class方法是使用 @classmethod 装饰器创建的。
class DecoratorExample: """ Example Class """ def __init__(self): """ Example Setup """ print('Hello, World!') @classmethod def example_function(cls): """ This method is a class method! """ print('I\'m a class method!') cls.some_other_function() @staticmethod def some_other_function(): print('Hello!') de = DecoratorExample()de.example_function()
类方法可能是这三种方法中比较混乱的方法类型,但是它们确实有其用途。类方法可以操纵类本身,这在处理更大,更复杂的项目时非常有用。
何时使用每种方法类型
这似乎很困难,而且在Python中的方法类型之间做出艰难的抉择,但是很快您就会通过一些实践来掌握它。
即使您只是为了编写有趣的小脚本而学习Python的另一种OOP功能是一项非常棒的技能,可以帮助您简化代码的故障排除和将来的重用。
总结:
如果本教程有点高级,或者与您所寻找的不完全相同,那么为什么不看一下这些从Python初学者到专业人士的课程呢?