Python中类的相关术语(附带案例)

目录

1、面向对象

2、类

3、实例

4、初始化方法

5、魔法方法

6、字符串方法

7、self

8、数据、属性、操作、行为

9、父类、基类、超类  or  子类、派生类

10、多态

11、重载多态  and  重写多态

12、名称解释

1、面向对象

        在Python中,面向对象编程(OOP)是一种非常重要的编程范式。在Python中,可以通过创建类(class)和实例化对象(object)来使用面向对象的编程思想。

        下面是一个简单的例子,People是一个类,__init__方法是一个魔法方法,在创建对象时被调用,用于初始化对象的属性。

class Person:
    def __init__(self, name):
        self.name = name


# 初始化实例
p1 = Person("小白")
print(p1.name)

2、类

        在Python中,类是一种用来创建对象的蓝图或模板。通过定义类,可以定义对象的属性和方法。

class 关键字用于定义一个类,在类的内部,你可以定义各种属性和方法。

  • 属性(attribute):类的属性是与该类相关联的数据。
  • 方法(method):类的方法是与该类相关联的函数。方法的第一个参数通常是 self,代表对当前对象的引用。

        通过类,可以创建对象的实例,并调用对象的方法来完成相关操作。

class Person:
    def __init__(self, name):
        self.name = name

    def get_name(self):
        return self.name


# 定义一个实例
p1 = Person("小白")
# 实例拥有属性
print(p1.name)
# 通过实例调用类里面定义的函数方法
print(p1.get_name())

3、实例

        在Python中,实例是由类创建的对象。通过实例,可以使用类中定义的属性和方法。

        在上面的代码中,Person是一个类,p1是 Person类创建的一个实例。通过实例,我们可以使用 Person类中定义的属性和方法。例如,我们可以通过 p1.name 访问实例的 name 属性,并通过 p1.get_name() 调用实例的 get_name方法。

4、初始化方法

        在Python中,初始化方法是一个特殊的方法,用于创建类的实例并初始化实例的属性。初始化方法的名称为 __init__,并且第一个参数通常是 self,代表对当前对象的引用。通过初始化方法,可以在创建对象时设置对象的初始状态。

        在上面的代码中,__init__ 方法被用来初始化实例的 name 属性。在创建实例时,我们传递了 name  参数,并将它们存储在实例的属性中。

        需要注意的是,初始化方法是可选的。如果你没有定义初始化方法,Python会提供一个默认的初始化方法。但通常情况下,你需要自己定义初始化方法来完成对象的初始化工作。

        另外,除了 __init__ 方法外,还有其他一些特殊方法可以用来定制类的行为。这些特殊方法被称为“魔术方法”,例如 __str__ 方法用于定义对象的字符串表示形式,__eq__ 方法用于定义对象的相等性判断等。熟练掌握这些特殊方法可以让你更好地定制类的行为。

5、魔法方法

        在Python中,魔术方法(Magic Methods)是一种特殊的方法,用双下划线 __ 开头和结尾命名的方法。这些方法用于定制类的行为,例如实现对象的比较、转换、算术运算等功能。通过使用魔术方法,可以让类与Python的内置功能更好地集成。

        例如 __str__ 方法用于定义对象的字符串表示形式,__doc__获取类的文档注释。

class Person:
    """
    这里是Person的文档注释
    """

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

    def get_name(self):
        return self.name

    def __str__(self):
        return f"姓名:{self.name}"


p1 = Person("小白")
print(p1)
print(p1.__doc__)

6、字符串方法

        在Python中,类的 __str__() 方法是一种特殊的方法,用于返回对象的字符串表示形式。当打印一个对象或使用 str(obj) 函数时,Python会自动调用该对象的 __str__() 方法来获取其字符串表示。

        上面的示例中,Person 类定义了一个 __init__() 方法来初始化对象的属性,以及一个 __str__() 方法来返回对象的字符串表示。在 __str__() 方法中,我们使用了格式化字符串(f-string)来构建要返回的字符串。

        通过定义 __str__() 方法,我们可以控制对象的字符串表示,使其更有意义和可读性。这在调试和输出对象信息时非常有用。

7、self

        在Python中,self 是一个特殊的参数,用于表示对象实例本身。当你调用类的方法时,Python会自动将对象实例传递给方法的第一个参数,通常被命名为 self

        通过使用 self,可以在类的方法中访问对象的属性和其他方法。在上面的示例中,self 参数被用来访问对象实例的 name 属性。

        总之,self 是Python中用来表示对象实例自身的约定俗成的名称,通过它可以在类的方法中访问对象的属性和方法。

8、数据、属性、操作、行为

        在面向对象编程中,常常使用以下概念来描述类和对象的不同方面:

  1. 数据(Data):数据是类的属性(也称为实例变量),用于表示类的状态和特征。它们存储在对象中,并且每个对象都可以具有不同的数据值。例如,在一个人(Person)类中,年龄(age)和姓名(name)可以是该类的数据。

  2. 属性(Attribute):属性是类的数据和方法的统称。它们是类和对象的特征,并且可以通过点符号来访问。属性可以是类级别的,被所有对象共享,也可以是对象级别的,每个对象独立拥有自己的属性。

  3. 操作(Operation):操作是类的方法(也称为成员函数),用于执行特定的功能或操作。操作定义了类可以做什么以及如何与对象进行交互。例如,在一个人(Person)类中,say_hello() 可以是一个操作,用于打印出个人问候信息。

  4. 行为(Behavior):行为是对象对外部请求做出的响应。它描述了对象如何根据接收到的消息作出反应。行为由类的方法实现,使对象能够执行某些动作或操作。例如,在一个人(Person)类中,行走(walk)可以是一个行为,用于移动对象的位置。

        这些概念相互关联,共同构成了面向对象编程的基础。数据和属性描述了类和对象的特征,操作和行为描述了类和对象的行为和功能。通过将数据、属性、操作和行为组合在一起,可以创建具有丰富功能和交互能力的类和对象。

9、父类、基类、超类  or  子类、派生类

        在面向对象编程中,一个类可以继承自另一个类,被继承的类称为父类(Parent Class)、基类(Base Class)或超类(Superclass),而继承的类称为子类(Subclass)或派生类(Derived Class)。

class Person:
    def __init__(self, name):
        self.name = name

    def get_name(self):
        return self.name

    def __str__(self):
        return f"姓名:{self.name}"


class Student(Person):
    def __init__(self, name, age):
        Person.__init__(self, name)
        self.age = age

    def get_age(self):
        return self.age



s = Student("小白", 25)
# 子类可以调用自己的方法
print(s.get_age())
# 子类调用父类的方法
print(s.get_name())
print(s)

        在上述示例中,Person是父类,Student是子类。子类 Student继承了父类 Person的 __init__()get_name() 方法,并且还定义了自己的 get_age() 方法。

        通过继承,子类可以直接使用父类的属性和方法,并且还可以在子类中添加自己的特定行为。这样可以减少代码的重复,并且使得程序的设计更加灵活和可扩展。

10、多态

        python没有多态 python到处都是多态

        多态是面向对象编程中的一个重要概念,指的是同一操作作用于不同的对象,可以有不同的解释和实现,产生不同的执行结果。多态性是面向对象编程的三大特性之一,另外两个是封装和继承。

        在多态中,子类可以将自己的实例化对象传递给父类的方法,从而实现对父类方法的重载或覆盖。当程序执行时,会根据实际传入的对象类型来决定调用哪个方法,从而实现不同的行为。

class Animal:
    def __init__(self, name):
        self.name = name

    def sound(self):
        print("Animal makes a sound")

class Dog(Animal):
    def sound(self):
        print("Dog barks")

class Cat(Animal):
    def sound(self):
        print("Cat meows")

# 创建Animal、Dog和Cat对象
animal = Animal("Animal")
dog = Dog("Dog")
cat = Cat("Cat")

# 调用各自的sound()方法
animal.sound()  # 输出:Animal makes a sound
dog.sound()  # 输出:Dog barks
cat.sound()  # 输出:Cat meows

11、重载多态  and  重写多态

        重载多态(Overloading Polymorphism)和重写多态(Overriding Polymorphism)都是多态性的体现,但它们实现多态性的方式不同。

        重载多态指的是在一个类中定义多个同名方法,但是这些方法的参数类型、个数或顺序不同,从而在调用该方法时根据传入的参数类型、个数或顺序来决定调用哪个方法。重载多态是通过编译期间静态绑定来实现的。

        重写多态指的是子类对父类方法的重写或覆盖,从而使得同样的方法调用对于不同的对象可以产生不同的行为。重写多态是通过运行期间动态绑定来实现的。

12、名称解释

  •         (1)实例属性:在Python中,实例属性是与类的实例相关联的属性,每个类的实例都可以具有不同的实例属性值。实例属性通常在类的构造方法(通常是__init__方法)中定义,并且它们通过self关键字与实例关联。
    •         (2)实例方法:在Python中,实例方法是与类的实例关联的方法,它们通过类的实例调用。实例方法的第一个参数通常是self,它代表调用该方法的实例本身。通过self,实例方法可以访问和操作实例的属性。
      •         (3)类属性:在Python中,类属性是与整个类关联的属性,而不是与类的实例关联。类属性是在类级别上定义的属性,它们在所有类的实例之间共享相同的值。类属性通常在类的顶层定义,而不在任何方法内。
        •         (4)类方法:在Python中,类方法是与类关联而不是与类的实例关联的方法。类方法使用@classmethod装饰器进行定义,并且其第一个参数通常是cls,表示类本身。类方法可以通过类调用,而不需要创建类的实例。
          •         (5)静态方法:在Python中,静态方法是与类关联的方法,但与实例无关。静态方法使用@staticmethod装饰器进行定义,与普通的函数类似,但位于类的命名空间中。静态方法既不需要表示实例的self参数,也不需要表示类的cls参数。
class Person:
    # 类属性
    info = "hello"

    # 类方法
    @classmethod
    def get_cls(cls):
        return cls.__name__

    # 静态方法
    @staticmethod
    def get_info():
        return Person.info

    # 初始化实例
    def __init__(self, name):
        self.name = name
    # 实例方法
    def get_name(self):
        return self.name

    def __str__(self):
        return f"姓名:{self.name}"


# p1是一个实例
p1 = Person("小白")
# 实例属性
print(p1.name)
# 通过实例调用实例方法
print(p1.get_name())
# 通过类名调用类属性
print(Person.info)
print(Person.get_cls())
print(Person.get_info())

  • 29
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火爆辣椒abc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值