首页 > 编程语言 >一杯咖啡的时间带你了解Python中的类

一杯咖啡的时间带你了解Python中的类

时间:2023-06-26 17:04:36浏览次数:44  
标签:__ 咖啡 name Python self 定义 一杯 Person 属性

1. 定义类

您可以使用class关键字在Python中定义一个类。下面是一个简单的类定义示例:

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

    def say_hello(self):
        print("Hello, my name is", self.name, "and I am", self.age, "years old")

在这个例子中,我们定义了类Person。类Person有两个属性:nameage__init__函数在创建类实例时被调用,并初始化Person实例的属性。我们还定义了一个名为say_hello的方法来打印类实例的属性。

2. 创建类实例

一旦类定义完成,您可以使用className()的形式实例化类。下面是一个使用上面定义的Person类的示例:

person1 = Person("John", 25)
person1.say_hello()    # 输出:Hello, my name is John and I am 25 years old

在这个例子中,我们创建了一个名为 person1Person实例并初始化其属性。我们然后调用 person1say_hello()方法来打印实例的属性。

3. 类属性

在类定义中,您还可以定义类属性。类属性是属于类本身的属性,而不是属于该类的任何实例的属性。以下是一个使用类属性的例子:

class Person:
    count = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age
        Person.count += 1

    def say_hello(self):
        print("Hello, my name is", self.name, "and I am", self.age, "years old")

print("Number of instances created:", Person.count)

person1 = Person("John", 25)
person2 = Person("Bob", 30)

print("Number of instances created:", Person.count)  # 输出:Number of instances created: 2

在这个例子中,我们定义了名为 count的类属性,并将其初始化为0。在__init__方法中,每当我们创建一个Person实例时,count都会增加1。在类定义后,我们打印了类属性count的值。接下来,我们创建两个Person实例并再次打印类属性count的值。

4. 继承

继承是一种创建新类的方式,它从现有类继承属性和方法。在Python中,继承是通过在新类定义中指定现有类的名称来实现的。以下是一个使用继承的例子:

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

    def say_hello(self):
        print("Hello, my name is", self.name, "and I am", self.age, "years old", "and my ID is", self.id)

student1 = Student("Alice", 20, "ABC123")
student1.say_hello()  # 输出:Hello, my name is Alice and I am 20 years old and my ID is ABC123

在这个例子中,我们定义了一个名为Student的新类,并让它继承自现有的Person类。当我们实例化Student的时候,我们可以传递一个名为 id的额外属性,它将不包含在父类中。在__init__方法中,我们调用父类的__init__方法以初始化继承的属性,并初始化新的id属性。我们还定义了一个名为say_hello的方法来打印所有属性,包括继承自父类Person的属性和Student本身的属性。当我们创建Student实例并调用say_hello方法时,打印了Person类的属性,以及Student类自己定义的id属性。

这就是关于Python中类的基础知识,学习类是Python编程中的重要一步。在编写复杂的应用程序时,类可以有效地组织和管理代码,使得代码更容易理解、修改和维护。

5. 抽象类和接口

在Python中,您还可以定义抽象类和接口。抽象类是定义了一些未实现的方法和属性的类,它们需要在子类中实现。抽象类不能直接实例化,而必须由其子类实现。接口是一系列方法的集合,定义了类如何和其他类进行交互。以下是一个使用抽象类和接口的例子:

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

shapes = [Circle(5), Rectangle(2, 4)]

for shape in shapes:
    print(shape.area())

在这个例子中,我们定义了一个抽象类Shape,它有一个抽象方法area,需要在其子类中实现。我们定义了两个子类CircleRectangle,并写了他们自己的area方法。这两个子类实现了Shape抽象类中定义的方法,并因此可以实例化。在我们的主程序中,我们创建了两个不同形状的对象,后来都被添加到了一个列表中。我们通过循环在列表中的对象上调用area()方法并输出其面积。

结论

通过上面这些例子,我们可以看到类是Python编程中非常强大的概念,可以帮助我们更好地组织和管理代码,同时也使我们能够创建复杂的数据结构,和实现抽象和接口等特性。 类是Python编程中的核心要素,并且是提高编程技能的重要一步。希望这篇Python基础教程中有关类的介绍对您有所帮助。

标签:__,咖啡,name,Python,self,定义,一杯,Person,属性
From: https://blog.51cto.com/u_16171246/6555942

相关文章

  • Python 实现将 Markdown 文档转换为 EPUB 电子书文件
    Python实现将Markdown文档转换为EPUB电子书文件已有转换工具要将Markdown文档转换为EPUB文件,可以使用一些工具和软件。以下是一些常见的方法:使用在线转换工具:有一些在线转换工具可以将Markdown文件转换为EPUB格式,如PandocOnline。只需要将Markdown文件上传......
  • Python如何将某文件夹下的文件名称输出到.txt文件中
    importos#os.listdir()方法获取文件夹名字,返回数组defgetAllFiles(targetDir):listFiles=os.listdir(targetDir)returnlistFilesfiles=getAllFiles(r"E:\UEtest\sla\精装\sla文件池\skp-10个")#写入list到txt文件中withopen(r"E:\UEtest\sla\精装\sla文件池\tes......
  • Python3 windows下 多环境管理
     windows下Python多环境隔离,每个项目拥有独立的依赖库,即site-packages。 ubuntu下通过 Anaconda 进行多环境操作, windows下往往直接下载安装包安装了(之前一直没去解决单个环境)现在整理下如下, 方式一(略,安装包有点大)1.官网下载Anaconda安装包下载地址:https://www......
  • Linux修改python源
    在运行pipinstallselenium或者安装其他三方库的时候遇到如下报错:Defaultingtouserinstallationbecausenormalsite-packagesisnotwriteableWARNING:pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavailable.Loo......
  • Python爬虫完整代码模版
    以下是一个基本的Python爬虫代码模板,可以根据需要进行修改:importrequestsfrombs4importBeautifulSoup#设置请求头,模拟浏览器访问headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.110......
  • 您需要配置好的 Python 2 SDK 来渲染 Epydoc docstring
    今天给代码写注释,写完以后,鼠标放在方法上注释显示异常。我发现是因为我注释的格式不对。把@改成:后问题解决......
  • python下载与安装
    python下载与安装一、下载官网下载地址:https://www.python.org/downloads/二、安装1.为了避免自己配置环境变量,勾选添加至path2.直接下一步3.全选点击install4.在dos窗口中输入python,出现以下界面表示安装成功......
  • python版本的playwright如何使用代理
      fromplaywright.sync_apiimportPlaywright,sync_playwrightwithsync_playwright()asplaywright:browser=playwright.chromium.launch()proxy_server='http://my-proxy-server.com:8080'context=browser.new_context(proxy={......
  • QA|workon env后没有进入虚拟环境,但也没有报错,但cmd可以|Python虚拟环境
    问题:pycharm的terminal执行workonenv后没有进入虚拟环境,但也没有报错  但cmd可以 原因:因为pycharm的terminal用的是powershell,更改为cmd,重新打开pycharm项目 然后重新创建虚拟环境并进入就可以成功了:   参考:workonenv后没有进入虚拟环境,但也没有报错-慕课......
  • python版本的 playwright , 如何拦截请求,替换响应内容
         fromplaywright.sync_apiimportPlaywright,sync_playwrightdefrequest_interceptor(route,request):logger.info(request.url)if'api.js'inrequest.url:#替换响应内容route.fulfill(status=200,......