Python 类与内置方法

目录

面向对象技术简介

定义一个类

关键概念

类的成员方法

self关键字 

详细解释

构造方法的定义和使用

示例

详细解释

构造方法的特点

魔术方法

创建和销毁

属性访问

描述符

迭代

可调用对象

比较

数值运算

反向运算

增量赋值运算


面向对象技术简介

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

面向对象编程(Object-Oriented Programming, OOP)有三个主要特性:封装、继承和多态。 

在 Python 中,类(class)是一种用于创建对象的模板。它们封装了数据和操作这些数据的方法。类是面向对象编程(OOP)的核心。

定义一个类

类(Class)是面向对象编程中的一个重要概念,它是对象(Object)的抽象,描述了对象共同的特征和行为。类中包含属性(Attributes)和方法(Methods)两个主要部分:

  1. 属性(Attributes)

    • 属性是类或对象的特征或状态。它们用来描述对象的数据。在类中定义的变量称为属性。例如,一个名为 Person 的类可以有属性如 nameagegender 等。
  2. 方法(Methods)

    • 方法是类中定义的函数,用于描述对象的行为或操作。方法可以操作对象的属性,执行一些操作或返回特定的值。例如,Person 类可能有 walk()talk() 方法来描述一个人的行为。

类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作这种套路,称之为:面向对象编程

面向对象编程就是,使用对象进行编程。

类和对象之间的关系是:

  • 是对对象的抽象描述,定义了对象共同的属性和方法。
  • 对象 是类的实例化,是具体存在的实体,拥有类定义的属性和方法的具体值和行为。

属性方法则是类中的两种重要成分:

  • 属性 描述了对象的状态或特征。
  • 方法 描述了对象能够执行的操作或行为

一个简单的类定义示例如下:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def bark(self):
        return f"{self.name} says woof!"
    
    def get_age(self):
        return self.age

关键概念
  1. 类定义 (class): 使用 class 关键字定义一个类。
  2. 初始化方法 (__init__): 构造函数,用于初始化对象的属性。self 参数是指向实例对象的引用。
  3. 实例方法: 定义了对象的行为,并可以访问对象的属性。
  4. 实例属性: 对象特有的属性。
  5. 类属性: 所有对象共享的属性(在类中定义,而不是在 __init__ 中)。
  6. 继承: 允许创建一个新类,它继承了一个现有类的特性。
  7. 多态: 不同类的对象可以用相同的接口调用其方法。
  8. 封装: 将数据和操作数据的方法打包在一起,限制对数据的直接访问。
类的成员方法
  • 定义类: 使用 class 关键字定义一个类。

  • 定义成员方法: 在类中定义函数时,需要使用 def 关键字。成员方法的第一个参数通常命名为 self,表示调用该方法的实例对象。通过 self,可以访问和修改对象的属性和其他方法。

  • 调用成员方法: 使用对象调用成员方法。

注意:函数是写在类外的,定义在类内部,我们都称之为方法

self关键字 

self关键字是成员方法定义的时候,必须填写的。
它用来表示类对象自身的意思
当我们使用类对象调用方法的是,self会自动被python传入在方法内部,想要访问类的成员变量,必须使用self

  • 访问实例属性
    • 通过 self 可以在方法中访问和修改实例的属性。
  • 调用其他成员方法
    • 通过 self 可以在一个方法中调用同一实例的其他方法。

下面是一个示例,展示如何定义和使用类的成员方法:

class Person:
    def __init__(self, name, age):
        self.name = name  # 定义属性
        self.age = age
    
    def greet(self):
        print(f"Hello, my name is {self.name}.")
    
    def have_birthday(self):
        self.age += 1
        print(f"Happy birthday! I am now {self.age} years old.")

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

# 调用成员方法
person1.greet()  # 输出: Hello, my name is Alice.
person1.have_birthday()  # 输出: Happy birthday! I am now 31 years old.
详细解释

1. 构造方法 __init__

  • __init__ 方法是一个特殊的方法,用于在创建对象时初始化对象的属性。它在实例化对象时自动调用。
def __init__(self, name, age):
    self.name = name
    self.age = age

2. 普通成员方法

  • 普通成员方法可以执行类的各种操作。在定义时需要将 self 作为第一个参数,以便访问实例属性和其他方法。
    def greet(self):
        print(f"Hello, my name is {self.name}.")
    
    def have_birthday(self):
        self.age += 1
        print(f"Happy birthday! I am now {self.age} years old.")
    

    使用成员方法

  • 创建类的实例对象,然后通过实例对象调用成员方法。
person1 = Person("Alice", 30)
person1.greet()  # 调用 greet 方法
person1.have_birthday()  # 调用 have_birthday 方法

在面向对象编程中,成员方法使得类的对象可以执行特定的行为,并与对象的属性进行交互。这种结构有助于将数据和操作封装在一起,提供更高的代码组织性和复用性。

在 Python 中,构造方法是一个特殊的方法,用于在创建类的实例对象时初始化对象的属性。构造方法的名称是 __init__,这是一个双下划线开头和结尾的特殊方法,表示它是一个内置的方法。构造方法在实例化对象时自动调用,不需要显式调用。

构造方法的定义和使用

在 Python 中,构造方法是一个特殊的方法,用于在创建类的实例对象时初始化对象的属性。构造方法的名称是 __init__,这是一个双下划线开头和结尾的特殊方法,表示它是一个内置的方法。构造方法在实例化对象时自动调用,不需要显式调用。

  1. 定义构造方法

    • 构造方法通过在类内部定义一个名为 __init__ 的方法来实现。它的第一个参数必须是 self,后面的参数是初始化对象时所需的参数。
  2. 实例化对象

    • 当使用类创建一个新的实例对象时,构造方法会自动调用,并传递初始化参数。
示例
class Person:
    def __init__(self, name, age):
        self.name = name  # 初始化实例属性
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name}.")

    def have_birthday(self):
        self.age += 1
        print(f"Happy birthday! I am now {self.age} years old.")

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

# 调用成员方法
person1.greet()  # 输出: Hello, my name is Alice.
person1.have_birthday()  # 输出: Happy birthday! I am now 31 years old.
详细解释

构造方法 __init__

  • 定义 __init__ 方法时,第一个参数是 self,后面可以接任意数量的参数,这些参数用于初始化对象的属性。
    def __init__(self, name, age):
        self.name = name  # 将传入的参数赋值给实例属性
        self.age = age
    

实例化对象

  • 创建 Person 类的实例对象时,传递参数 nameage 给构造方法。
    person1 = Person("Alice", 30)
    

访问初始化的属性

  • 实例对象的属性通过构造方法进行初始化,可以在对象的生命周期中访问和修改这些属性。
    person1.greet()  # 输出: Hello, my name is Alice.
    person1.have_birthday()  # 输出: Happy birthday! I am now 31 years old.
    
     
构造方法的特点
  • 自动调用

    • 当创建一个新的实例对象时,构造方法会自动调用,不需要显式调用。
    person1 = Person("Alice", 30)  # 自动调用 __init__ 方法
    

  • 初始化对象属性

    • 构造方法的主要作用是初始化对象的属性,确保每个实例对象在创建时都有适当的初始状态。
    def __init__(self, name, age):
        self.name = name
        self.age = age
    

  • 参数传递

    • 构造方法可以接受多个参数,用于为对象的属性赋初始值。
    person1 = Person("Alice", 30)
    

魔术方法

 _init 构造方法,是Python类内置的方法之一。这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称之为:魔术术方法

魔术方法(Magic Methods),也称为特殊方法(Special Methods)或双下划线方法(Dunder Methods),是 Python 类中的一组特殊方法。它们的名称以双下划线(__)开头和结尾,并在特定情况下由 Python 解释器自动调用。魔术方法可以让类的实例表现得像内置类型一样,支持各种操作符、函数和方法。

创建和销毁
魔术方法描述
__init__构造方法,在创建对象时自动调用。
__del__析构方法,在对象被销毁时自动调用。
__new____init__之前调用,用于创建对象。
__repr__返回对象的官方字符串表示。
__str__返回对象的友好字符串表示。
属性访问
魔术方法描述
__getattr__获取属性时调用。
__setattr__设置属性时调用。
__delattr__删除属性时调用。
__getattribute__获取属性时总是调用(优先于__getattr__)。
描述符
魔术方法描述
__get__定义当描述符的值被取用时的行为。
__set__定义当描述符的值被改变时的行为。
__delete__定义当描述符的值被删除时的行为。
迭代
魔术方法描述
__iter__返回迭代器对象。
__reversed__定义当使用reversed()时的行为。
__next__返回下一个迭代器元素。
可调用对象
魔术方法描述
__call__允许对象像函数一样被调用。
比较
魔术方法描述
__eq__定义等于操作符(==)的行为。
__ne__定义不等于操作符(!=)的行为。
__lt__定义小于操作符(<)的行为。
__le__定义小于等于操作符(<=)的行为。
__gt__定义大于操作符(>)的行为。
__ge__定义大于等于操作符(>=)的行为。
数值运算
魔术方法描述
__add__定义加法操作符(+)的行为。
__sub__定义减法操作符(-)的行为。
__mul__定义乘法操作符(*)的行为。
__truediv__定义真除法操作符(/)的行为。
__floordiv__定义整数除法操作符(//)的行为。
__mod__定义取模操作符(%)的行为。
__pow__定义幂运算操作符(**)的行为。
__lshift__定义左移操作符(<<)的行为。
__rshift__定义右移操作符(>>)的行为。
__and__定义按位与操作符(&)的行为。
__or__定义按位或操作符(`
__xor__定义按位异或操作符(^)的行为。
反向运算
魔术方法描述
__radd__反向加法操作符。
__rsub__反向减法操作符。
__rmul__反向乘法操作符。
更多类似的方法。
增量赋值运算
魔术方法描述
__iadd__定义加法
  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ZZDICT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值