Python——类和对象

类和对象

概念简介

  • 类(class): 用来描述具有咸通的属性和方法的集合。它定义了该集合中每个对象所共有的属性和方法。
  • 方法: 类中定义的函数。
  • 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写: 如果说从父类继承的方法不能满足子类的需求,那么可以对其进行改写,这个过程叫做方法的覆盖(override),也称为方法的
    重写。
  • 局部变量: 定义在方法中的变量,只作用于当前实例的类。
  • 实例变量: 在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用self修饰的变量。
  • 继承: 即一个派生类(deviced class) 继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。
  • 实例化: 创建一个类的实例,类的具体对象。
  • 对象: 通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

和其它的编程语言相比较,Python在尽可能不增加新语法和语义的情况下加入了类机制。
Python中的类提供了面向对象编程的基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。
对象可以包含任意数量和类型的数据。

class SegFormerHead:
	......
	# 具体的内容,包括变量和方法

上述声明的类实体化之后,我们可以通过雷鸣访问其属性,并且可以调用其中的函数。

类对象

类对象支持两种操作:属性引用和实例化。

属性引用使用和Python中所有属性引用一样的标准语法:obj.name

类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

class MyClass:
	a = 123
	def f(self):
		return 'hello world!'
# 实例化对象
myObject = MyClass()

# 访问类的属性和方法

print(myObject.a)  # 访问的是类的属性
print(myObject.f)  # 访问的是类的方法

构造方法

Pyhon中也有自己的构造方法:__init__()
该方法用于在创建对象时初始化对象的属性。

该方法(__init__)在实例化时会自动调用,通过构造函数,我们可以为对象设置初始状态,病传递参数给对象的属性。
例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def display_info(self):
        print(f"Name: {self.name}, Age: {self.age}")

# 创建一个 Person 对象实例
person1 = Person("Alice", 30)
person1.display_info()

# 创建另一个 Person 对象实例
person2 = Person("Bob", 25)
person2.display_info()

在上面的例子中,我们定义了一个 Person 类,其中包含一个构造函数 __init__(),它接受 name age 作为参数,并将它们存储为对象的属性。我们通过调用 Person 类的构造函数来创建两个不同的 Person 对象实例:person1 person2,并分别输出它们的信息。

构造函数__init__()的作用是初始化对象的属性,为对象提供初始状态,他在创建对象实例时自动调用,并允许我们对对象进行必要的初始化操作。通过构造函数,我们可以方便地传递参数给对象,使对象的每个实例在创建时都具有有不同的属性值,从而使想对象的“个性化定制”。

self

在Python中,类里面的方法通常会有一个特殊的参数self,它代表当前对象实例自身。self参数是Python中用来引用对象自身的约定,它的作用是方法内部访问对象的属性和其他方法。
当我们调用对象的方法时,Python会自动将方法所属的对象(即调用该方法的对象实例)作为第一个参数传递给方法。习惯上,我们使用self来表示这个参数,但是实际上我们可以使用任何合法的变量名。但是,强烈建议使用self,因为它是一种通用的约定,有助于提高代码的可读性,并且符合Python社区的习惯。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def display_info(self):
        print(f"Name: {self.name}, Age: {self.age}")
    
    def celebrate_birthday(self):
        self.age += 1
        print(f"{self.name} is celebrating their birthday! Now they are {self.age} years old.")

# 创建一个 Person 对象实例
person1 = Person("Alice", 30)

# 调用对象的方法
person1.display_info()  # 输出:Name: Alice, Age: 30

# 调用对象的方法,其中方法内部使用了 self
person1.celebrate_birthday() # 输出:Alice is celebrating their birthday! Now they are 31 years old.
person1.display_info()  # 输出:Name: Alice, Age: 31

类的方法

在类的内部,使用def关键字来定义一个方法,与一般的函数定义不同,类方法必须包含参数self,并且是第一个参数,self代表的是类的实例。
Python中类的方法分为:实例方法类方法静态方法

  • 实例方法(Instance Method)
    1. 实例方法是最常见的类方法,在定义时第一个参数一般为self,用于表示当前对象实例;
    2. 通过实例方法,我们可以操作对象的属性,调用其他方法,以及实现对象的行为
    3. 实例方法通过对象实例来调用,Python会自动将对象实例传递给方法的self参数
  • 类方法(Class Method):
    1. 类方法使用装饰器@classmethod来定义,第一个参数一般为cls,用来表示类本身;
    2. 类方法可以访问类的属性和方法,但是不能直接访问对象实例的属性;
    3. 类方法通过类本身来调用,Python会自动将类本身传递给方法的cls参数。
  • 静态方法(Static Method):
    1. 静态方法使用装饰器@staticmethod来定义,不需要特定的参数来表示对象实例或类本身;
    2. 静态方法与类和对象实例无关,可以作为纯粹的工具函数存在,不依赖于类属性或实例属性。
class Circle:
    pi = 3.14

    def __init__(self, radius):
        self.radius = radius

    # 实例方法
    def calculate_area(self):
        return self.pi * self.radius ** 2

    # 类方法
    @classmethod
    def set_pi(cls, new_pi):
        cls.pi = new_pi

    # 静态方法
    @staticmethod
    def convert_to_diameter(radius):
        return radius * 2

# 创建一个 Circle 对象实例
circle = Circle(5)

# 调用实例方法
print(circle.calculate_area())  # 输出:78.5

# 调用类方法
Circle.set_pi(3.14159)
print(circle.pi)  # 输出:3.14159

# 调用静态方法
diameter = Circle.convert_to_diameter(5)
print(diameter)  # 输出:10

类方法和静态方法在Python中相对少用,但是它们具有一些特定的应用场景和优点:

类方法(Class Method)的应用场景和优点:

  1. 工厂方法模式: 类方法可用于构建和返回新的实例,对于工厂方法模式是一种常见的应用场景;
  2. 类级别的操作: 当需要在类级别执行操作,而不是在实例级别时,类方法可以派上用场,比如修改类属性、提供对类的访问限制等;
  3. 提高灵活性: 类方法可以使用类本身作为对象,从而提高了方法的灵活性,使得在修改类名时不需要修改相关的类方法。

静态方法(Static Method)的应用场景和有点

  1. 独立功能: 静态方法是在类中组织函数的一种形式,它以类的名义空间存在,但是与类及其实例无关,适用于一些不需要访问类属性或实例属性的独立功能。
  2. 逻辑上的归属: 静态方法可以提高代码的组织性和可维护性,将一些独立的函数放入类的命名空间中,使程序结构更加清晰。
  3. 代码结构: 静态方法可以提高代码的组织性和可维护性,将一些独立的函数放入类的命名空间中,使程序结构更加清晰。

虽然说类方法和静态方法相对不太常用,但是他们在特定场景下仍然能够提供一些额外的功能和特性。在具体的使用过程中,需要依据具体的需求来选择使用。

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 面向对象的程序设计分为两种,一种是基于类的,另一种是基于原型的。其中基于类的程序设计是最常见的一种,它主要涉及到两个概念,即类和对象。类是一个抽象的概念,它描述了一类具有相同属性和方法的对象,而对象则是具体的实例。在基于类的程序设计中,类用于描述对象的属性和方法,而对象则是类的具体实现。因此,基于类的程序设计更注重对象的封装、继承和多态等概念。 ### 回答2: 面向对象编程是一种程序设计范式,它把程序看作是一组对象的集合,每个对象都有一个特定的属性和方法。在Python中,每个对象都是一个类的实例,类是一个抽象的概念,用于表示一组相似的对象。对象是类的实例,它继承了类的属性和方法,同时可以拥有自己的属性和方法。 在Python中,类定义的语法为: class ClassName: # 属性和方法 在类定义中,可以定义属性和方法,类的属性是一些数据,用来描述类的特征;类的方法是一些函数,用来描述类的行为。同时,类还可以继承其他类的属性和方法,通过继承,子类可以重用父类的代码,同时也可以增加自己的属性和方法。 在Python中,对象的创建和使用的语法为: object_name = ClassName() 在对象的创建过程中,会调用类的构造函数(__init__()方法),用来初始化对象的属性和方法。然后,可以使用对象的属性和方法来完成具体的任务。 在面向对象编程中,有三个重要的概念,分别是封装、继承和多态。封装是指把数据和行为包装在一个类中,对外部隐藏具体的实现细节;继承是指子类可以继承父类的属性和方法,在子类中可以重写父类的方法和添加自己的方法;多态是指同一个方法可以在不同的对象上产生不同的结果,通过实现多态,程序可以更加灵活和可扩展。 最后,在Python中,还可以通过__str__()方法来自定义对象的字符串表示方式,方便输出和调试。同时,还可以通过@property和@setter装饰器来实现属性的封装和保护。 总之,类和对象是面向对象编程的基础,它提供了一种更加灵活和可扩展的编程方式,同时也对程序的设计和架构提出了更高的要求。因此,熟练掌握类和对象的相关知识,是Python编程的基础和必备技能。 ### 回答3: Python中的面向对象编程(Object-Oriented Programming,OOP)是一种将数据和行为封装在一起,以创建对象为中心的思想。在Python中,一切皆为对象,从简单的数字、字符串到复杂的列表、元组都是对象。面向对象(Object-Oriented)编程中最基本的两个概念是类和对象。 类是一种数据类型,是一组相关数据和方法的描述。其实就是一个对象的模板,包含了它所描述的对象共有的属性和方法。Python中定义类的方法比较简单,使用关键字`class`即可,例如: ```python class Dog: def __init__(self, name, age): self.name = name self.age = age def bark(self): print("汪汪!") ``` 上述代码定义了一个Dog类,包含了Dog对象共有的属性(name和age)和方法(bark)。通过关键字`def`定义Dog类的方法,其中`__init__`方法是一个特殊的方法,用于初始化类的对象属性。 当我们需要使用Dog类时,需要将它实例化为一个对象。例如: ```python dog1 = Dog("小黑", 3) dog1.bark() # 输出:汪汪! ``` 上述代码创建了一个Dog对象,设置了它的name为“小黑”,age为3,然后调用了Dog类的方法bark。 另外,Python中还有一些内置函数,可以用于操作类和对象。例如: - `type`函数:用于返回对象的类型。使用方法为`type(object)` - `isinstance`函数:用于检查对象是否为指定类的实例。使用方法为`isinstance(object, classinfo)` - `hasattr`函数:用于检查对象是否具有指定的属性。使用方法为`hasattr(object, name)` - `getattr`函数:用于获取对象的属性值。使用方法为`getattr(object, name[, default])` - `setattr`函数:用于设置对象的属性值。使用方法为`setattr(object, name, value)` 以上是Python中定义类和使用类的基本语法和函数,掌握了这些知识后,可以尝试设计自己的类并应用到实际的编程项目中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值