• Python 面向对象编程:类、对象、初始化和方法详解


    Python 是一种面向对象的编程语言。在 Python 中,几乎所有东西都是对象,都具有其属性和方法。

    类似于对象构造函数或用于创建对象的“蓝图”的类。

    创建一个类

    要创建一个类,请使用关键字 class:

    示例,创建一个名为 MyClass 的类,其中包含一个名为 x 的属性:

    class MyClass:
      x = 5
    
    • 1
    • 2

    创建对象

    现在,我们可以使用名为 MyClass 的类来创建对象:

    示例,创建一个名为 p1 的对象,并打印 x 的值:

    p1 = MyClass()
    print(p1.x)
    
    • 1
    • 2

    init() 函数

    上面的示例是最简单形式的类和对象,不太适用于实际应用程序。要理解类的含义,我们必须了解内置的 init() 函数。所有类都有一个名为 init() 的函数,该函数在初始化类时始终执行。使用 init() 函数来为对象属性分配值,或者在创建对象时需要执行的其他操作:

    示例,创建一个名为 Person 的类,使用 init() 函数为 name 和 age 分配值:

    class Person:
      def __init__(self, name, age):
        self.name = name
        self.age = age
    
    p1 = Person("John", 36)
    
    print(p1.name)
    print(p1.age)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意: 每次使用类创建新对象时,init() 函数都会自动调用。

    str() 函数

    str() 函数控制当类对象表示为字符串时应返回什么。如果未设置 str() 函数,则返回对象的字符串表示:

    示例,没有 str() 函数的对象的字符串表示:

    class Person:
      def __init__(self, name, age):
        self.name = name
        self.age = age
    
    p1 = Person("John", 36)
    
    print(p1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    示例,带有 str() 函数的对象的字符串表示:

    class Person:
      def __init__(self, name, age):
        self.name = name
        self.age = age
    
      def __str__(self):
        return f"{self.name}({self.age})"
    
    p1 = Person("John", 36)
    
    print(p1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    对象方法

    对象也可以包含方法。对象中的方法是属于对象的函数。让我们在 Person 类中创建一个方法:

    示例,插入一个打印问候的函数,并在 p1 对象上执行它:

    class Person:
      def __init__(self, name, age):
        self.name = name
        self.age = age
    
      def myfunc(self):
        print("Hello my name is " + self.name)
    
    p1 = Person("John", 36)
    p1.myfunc()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    注意: self 参数是对类的当前实例的引用,并用于访问属于类的变量。

    self 参数

    self 参数是对类的当前实例的引用,并用于访问属于类的变量。它不一定要命名为 self,您可以根据需要命名它,但它必须是类中任何函数的第一个参数:

    示例,使用 mysillyobject 和 abc 代替 self:

    class Person:
      def __init__(mysillyobject, name, age):
        mysillyobject.name = name
        mysillyobject.age = age
    
      def myfunc(abc):
        print("Hello my name is " + abc.name)
    
    p1 = Person("John", 36)
    p1.myfunc()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    修改对象属性

    您可以像这样修改对象的属性:

    示例,将 p1 的年龄设置为 40:

    p1.age = 40
    
    • 1

    删除对象属性

    您可以使用 del 关键字来删除对象的属性:

    示例,从 p1 对象中删除 age 属性:

    del p1.age
    
    • 1

    删除对象

    您可以使用 del 关键字来删除对象:

    示例,删除 p1 对象:

    del p1
    
    • 1

    pass 语句

    类定义不能空,但如果由于某种原因类定义没有内容,请插入 pass 语句以避免出错。

    示例

    class Person:
      pass
    
    • 1
    • 2

    最后

    为了方便其他设备和平台的小伙伴观看往期文章:

    微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

    看完如果觉得有帮助,欢迎 点赞、收藏、关注

  • 相关阅读:
    WxJava使用lettuce的redis实现access_token的共享
    uniapp踩坑之项目:uniapp数字键盘组件—APP端
    Sed流编辑器总结
    FFT点数、补零对结果的影响
    Linux编译器和调试器的使用
    12306 火车票价格解析 (PHP 解析)
    【译】.NET 7 中的性能改进(九)
    Linux安装Ansible管理工具
    C#窗体弹出方式总结
    是什么让.NET7的Min和Max方法性能暴增了45倍?
  • 原文地址:https://blog.csdn.net/2302_76489021/article/details/134041657