python 类详解及简单实例

Python 类详解及简单实例

类和实例

在Python中,我们使用class来定义一个类,实例化一个类得到一个对象,这是面向对象编程的基本概念。

class MyClass:
    pass

my_instance = MyClass() # 实例化一个对象

我们可以使用type()函数来查看对象的类型,如:

print(type(my_instance)) # <class '__main__.MyClass'>

当我们实例化一个对象时,Python解释器会自动调用对象的构造函数__init__(),该函数可以接收除self(当前对象)以外的任何参数。

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

my_instance = MyClass('Jack')
print(my_instance.name) # Jack

属性和方法

类包含属性和方法这两个核心元素。

属性

属性是类中的变量,通过.来访问。

class MyClass:
    class_var = 0 # 类变量,所有类的实例共享

    def __init__(self, name):
        self.name = name # 实例变量,每个实例都独有

my_instance_1 = MyClass('Jack')
my_instance_2 = MyClass('Rose')

print(my_instance_1.class_var) # 0
print(my_instance_2.class_var) # 0

my_instance_1.class_var = 1
print(my_instance_1.class_var) # 1
print(my_instance_2.class_var) # 0

方法

方法是类中的函数,方法包括普通方法和类方法。

普通方法

普通方法第一个参数默认为实例本身,通常以self作为名字。

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

    def greet(self):
        print(f'Hello, {self.name}!')

my_instance = MyClass('Jack')
my_instance.greet() # Hello, Jack!

类方法

类方法的第一个参数默认为类本身,通常以cls作为名字,使用@classmethod装饰器来定义。

class MyClass:
    class_var = 0

    @classmethod
    def class_method(cls):
        cls.class_var += 1

my_instance_1 = MyClass()
my_instance_2 = MyClass()

MyClass.class_method() # 修改类变量
print(my_instance_1.class_var) # 1
print(my_instance_2.class_var) # 1

继承

在Python中,我们使用()来指定继承的父类。

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

    def greet(self):
        print(f'Hello, {self.name}!')

class SubClass(BaseClass):
    def greet(self):
        print(f'Hi, {self.name}!')

my_instance_1 = BaseClass('Jack')
my_instance_2 = SubClass('Rose')

my_instance_1.greet() # Hello, Jack!
my_instance_2.greet() # Hi, Rose!

子类可以重写父类的方法和属性,如上面代码中,子类重写了greet()方法。

示例一:模拟银行账户

假设我们要模拟银行账户,每个账户有账号和金额两个属性,有取款和存款两个操作。

class BankAccount:
    def __init__(self, account, balance=0):
        self.account = account
        self.balance = balance

    def deposit(self, amount):
        self.balance += amount
        print(f'Deposited {amount} yuan, now balance is {self.balance} yuan.')

    def withdraw(self, amount):
        if amount <= self.balance:
            self.balance -= amount
            print(f'Withdrawn {amount} yuan, now balance is {self.balance} yuan.')
        else:
            print(f'The balance is not enough, current balance is {self.balance} yuan.')

my_account = BankAccount('123456')
my_account.deposit(1000) # Deposited 1000 yuan, now balance is 1000 yuan.
my_account.withdraw(500) # Withdrawn 500 yuan, now balance is 500 yuan.
my_account.withdraw(1000) # The balance is not enough, current balance is 500 yuan.

示例二:继承与多态

假设我们要模拟几何形体,有圆形和矩形两种形状,有get_area()获取面积的操作。

class GeometricShape:
    def get_area(self):
        return 0

class Circle(GeometricShape):
    def __init__(self, r):
        self.r = r

    def get_area(self):
        return 3.14 * self.r ** 2

class Rectangle(GeometricShape):
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def get_area(self):
        return self.a * self.b

my_circle = Circle(5)
my_rectangle = Rectangle(3, 4)
print(my_circle.get_area()) # 78.5
print(my_rectangle.get_area()) # 12

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 类详解及简单实例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 详解Python 计算完全伽马函数

    Python 计算完全伽马函数(complete gamma function)的完整攻略如下: 1. 安装所需库 要计算完全伽马函数,需要用到SciPy库。可以通过以下命令安装: pip install scipy 2. 引入库和函数 在Python中,计算完全伽马函数可以使用scipy库中的gamma方法。所以,我们首先需要引入scipy库: impor…

    python-answer 2023年3月25日
    00
  • 利用python实现JSON文档与Python对象互相转换

    利用 Python 实现 JSON 文档与 Python 对象互相转换的攻略如下: 什么是 JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在 Web 应用中并且数据格式比较简单。它是基于 JavaScript 的一种标记语言。 Python 中 JSON 数据结构 在 Python 中,JSON 数据…

    python 2023年5月13日
    00
  • python字符串反转的四种方法详解

    Python字符串反转的四种方法详解 在Python中,字符串是一种非常常见的数据类型,并且在字符串处理中经常需要进行字符串反转这一操作。 本文将详细讲解Python字符串反转的四种有效方法。 方法一:使用字符串切片 字符串切片可以直接得到反转后的字符串。 示例代码: string = "Hello, World!" reversed_s…

    python 2023年6月5日
    00
  • Python使用面向对象方式创建线程实现12306售票系统

    下面我将为您讲解如何使用面向对象方式创建线程实现12306售票系统。 1. 线程介绍 线程(Thread)是程序执行的最小单位、比进程更小的能独立运行的基本单位。在一个进程中可以有多个线程同时运行,这就是所谓的多线程。Python的标准库中提供了Thread类,可以用于创建线程。 2. 12306售票系统 12306是中国铁路客户服务中心(China Rai…

    python 2023年6月6日
    00
  • 深入理解最新Python中的Match Case

    深入理解最新Python中的Match Case 什么是Match Case Match Case是Python3.10中引入的新特性,用于简化对复杂条件的判断。类似于swict-case语句,Match Case能够对多个条件进行匹配判断,以便更有效地编写代码。它使用 match 和 case 关键字来传递参数和进行条件匹配。 Match Case的使用方…

    python 2023年6月3日
    00
  • Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法

    在Python编程过程中,我们可能会遇到各种错误,例如TypeError: ‘NoneType’ object is not iterable。这个错误通常是由于我们尝试迭一个None对象而引起的。以下是解决这个错误的完整攻略: 1. 检查变量是否为None 在Python编程程中,我们应该始终检查变量是否为None。如果我们尝试迭代一个None对象会出现T…

    python 2023年5月13日
    00
  • python 画三维图像 曲面图和散点图的示例

    要在Python中画三维图像,可以使用Matplotlib库中的mplot3d模块。它提供了曲面绘制、散点绘制、线框绘制、多个数据集合并绘制、等值曲面绘制等功能。以下是Python 画三维图像 曲面图和散点图的示例攻略。 1. 曲面绘制 1.1 数据准备 首先我们需要准备三元数据,即 x, y, z。在这个示例中,我们准备了以下数据。 import nump…

    python 2023年5月19日
    00
  • 几个适合python初学者的简单小程序,看完受益匪浅!(推荐)

    几个适合Python初学者的简单小程序 Python是一种易学易用的编程语言,适合初学者入门学习编程。以下介绍几个适合Python初学者的简单小程序,这些小程序简单易懂,编写过程中可以让初学者更好的了解Python编程的基本操作和语法。 简单的计算器 这是一个可以实现基本的运算的计算器,代码如下: num1 = float(input("请输入第一…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部