Python类和对象

程序员卷不动了 2023-03-15 PM 515℃ 0条
概括

Python是一种面向对象的编程语言,类和对象是Python中面向对象编程(OOP)的基础。类和对象是OOP中的两个核心概念,一个类是一个抽象的概念,它定义了一个对象的属性和方法,而对象是类的一个实例,具有特定的属性和行为。

类定义了对象的属性和方法的结构,是实现抽象的基础。类可以看做是一个对象的“蓝图”,它描述了这个对象可以拥有的属性和方法,但它本身不是一个对象。类中包括了成员变量(属性)和成员函数(方法),这些成员都可以被对象调用。

定义一个类的语法如下:

 class MyClass:
    def __init__(self, name):
      self.name = name
      
    def say_hello(self):
      print("Hello, my name is", self.name)

在这个例子中,定义了一个叫做 MyClass 的类,它有一个构造函数 __init__,用于初始化对象的属性,还有一个 say_hello 成员方法,用于打印对象的名称。

然后,通过类创建出一个对象的实例,实现了面向对象的编程。对象的实例具有类定义的属性和方法,可以通过对象调用。

# 创建一个对象的实例
person = MyClass("John")
# 调用对象的方法
person.say_hello()

输出结果为:

 Hello, my name is John

在上面的例子中,我们创建了一个 MyClass 的实例,并调用了它的 say_hello 方法,这个方法使用了 self 参数,它表示对象本身。因此,我们可以通过 self 访问对象的属性和方法。

在Python中,类和对象是一等公民,意味着它们可以被当作参数传递给函数、可以被赋值给变量、可以组合成其他类等等,这些特性使Python非常灵活和强大。

首先,我们把类中不同的属性和方法介绍一下。

属性

属性是类中的数据成员,它们定义了类或对象所拥有的状态。Python中的属性可以是实例变量或类变量。

实例变量

实例变量是指仅仅存在于一个实例中的变量,每个实例可以拥有自己的一组实例变量。

在类中定义实例变量需要在方法中使用关键字self,并使用点号(.)表示如下:

 class MyClass:
    def __init__(self, name):
        self.name = name  # 定义实例变量

person1 = MyClass("Bob")
person2 = MyClass("Tom")
print(person1.name) # 输出Bob
print(person2.name) # 输出Tom
类变量

类变量是指属于整个类的变量,不是属于任何一个实例的变量。类变量被定义在类的方法之外,通常在初始化时赋值。

 class MyClass:
    count = 0  # 定义类变量
    
    def __init__(self):
        MyClass.count += 1  # 每次实例化,类变量加一
方法

方法是定义在类里面的函数。方法可以是实例方法、类方法、静态方法。

实例方法

实例方法是指只能被实例调用的方法。实例方法的第一个参数总是 self,代表实例本身。

 class MyClass:
    def __init__(self, name):
        self.name = name
        
    def say_hello(self):
        print("Hello, my name is", self.name)

person = MyClass("John")
person.say_hello()

输出结果为:

 
Hello, my name is John
类方法

类方法是指可以被类调用的方法,第一个参数是cls表示类本身。

 class MyClass:
    count = 0  # 定义类变量

    def __init__(self):
        MyClass.count += 1

    @classmethod
    def get_count(cls):
        return cls.count

print(MyClass.get_count()) # 输出 0 
person1 = MyClass()
person2 = MyClass()
print(MyClass.get_count()) # 输出 2 
静态方法

静态方法并不依赖于任何实例或类,通常用于归档工具方法,也常常用于辅助类的构造和测试。

 class MyClass:
    @staticmethod
    def say_hello():
        print("Hello, World!")

MyClass.say_hello() # 输出Hello, World!

所以我们可以看出,Python中的类和对象非常灵活,可以定义实例变量、类变量、实例方法、类方法和静态方法,极大地增强了Python语言的可扩展性和可用性。

非特殊说明,本博所有文章均为博主原创。

评论啦~