首页 > 编程语言 >[2]Python面向对象-【1】类

[2]Python面向对象-【1】类

时间:2023-04-03 10:09:05浏览次数:50  
标签:__ Python self 面向对象 say 方法 hello 属性

什么是类

类是Python面向对象编程的基本概念之一,它是一种抽象数据类型,用于封装数据和行为。可以把类看作是一种蓝图或者模板,用于创建对象。

类的命名规范

  1. 类名应该采用驼峰式命名法(CamelCase),即每个单词的首字母都要大写,不使用下划线连接单词。例如,类名可以是 MyClass 或者 MyAwesomeClass。
  2. 类名应该具有描述性,能够清晰地表达类的功能和作用。
  3. 如果一个类是另一个类的子类,那么子类的类名应该包含父类的类名。例如,如果有一个 Animal 类和一个 Dog 类,那么 Dog 类应该是 Animal 类的子类,类名可以是 Dog 或者 AnimalDog。

以下是一些符合规范的类名示例:

class Car:
    pass

class UserAccount:
    pass

class MyCustomException(Exception):
    pass

需要注意的是,Python内置的一些类名采用单词全小写,例如 list、dict、set 等。这些类名也应该被避免作为自定义类的名称。

如何定义一个类

Python使用class关键字来定义类。一个最基本的类定义如下:

class MyClass:
    pass

在类定义中,类名以大写字母开头,紧跟着是冒号。类的主体位于缩进块中,通常包含类的属性和方法。这里的pass是一个占位符,表示该类暂时没有任何属性和方法。

类的属性和方法

类的属性是类的数据成员,用于存储对象的状态。类的方法是类的成员函数,用于操作对象的状态。下面是一个包含属性和方法的类的例子:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def say_hello(self):
        print(f"Hello, my name is {self.name} and I'm {self.age} years old.")

这个类的__init__方法是一个构造函数,用于初始化对象的属性。self是一个特殊的参数,表示当前对象本身。在构造函数中,我们为对象的name和age属性赋值。

类的say_hello方法是一个简单的方法,用于输出一个问候语。在这个方法中,我们使用了self.name和self.age来访问对象的属性。

如何创建一个对象

在定义了一个类之后,我们可以通过实例化一个对象来使用它。下面是一个实例化Person类的例子:

person = Person("Alice", 30)
person.say_hello()

这里我们创建了一个名为person的Person对象,并为它的name和age属性赋值。然后我们调用了say_hello方法来输出问候语。

对象的属性和方法

对象的属性是类的属性的实例,用于存储对象的状态。对象的方法是类的方法的实例,用于操作对象的状态。我们可以通过点.操作符来访问对象的属性和方法。下面是一个使用对象属性和方法的例子:

person = Person("Alice", 30)
print(person.name)
person.say_hello()

这里我们创建了一个名为person的Person对象,并使用name属性输出了对象的名字。然后我们调用了say_hello方法来输出问候语。

类的继承和多态

类的继承是一种重要的面向对象编程技术,它允许创建一个新类,从现有的类中继承属性和方法。继承类也称为父类、基类或超类,被继承类称为子类、派生类或衍生类。下面是一个继承类的例子:

class Student(Person):
    def __init__(self, name, age, major):
        super().__init__(name, age)
        self.major = major
        
    def say_hello(self):
        super().say_hello()
        print(f"I'm majoring in {self.major}.")

这个Student类继承自Person类,并新增了一个major属性。Student类还重写了say_hello方法,首先调用了Person类的say_hello方法,然后输出major属性的值。

下面是一个使用继承类的例子:

student = Student("Bob", 20, "Computer Science")
student.say_hello()

这里我们创建了一个名为student的Student对象,并为它的name、age和major属性赋值。然后我们调用了say_hello方法来输出问候语和专业。

多态是另一个重要的面向对象编程技术,它允许不同类型的对象对相同的消息做出不同的响应。下面是一个多态的例子:

def greet(person):
    person.say_hello()
    
greet(person)
greet(student)

这里我们定义了一个greet函数,它接受一个Person对象作为参数,并调用say_hello方法来输出问候语。我们可以向greet函数传递一个Person对象或者一个Student对象,它们都具有say_hello方法,并可以正确地输出问候语和专业。

类的私有属性和方法

Python中的类成员默认是公有的,可以在类的外部直接访问。如果希望某些类成员只能在类的内部访问,可以在它们的名字前面加上两个下划线__。这样,这些类成员就成为了私有成员。下面是一个包含私有属性和方法的类的例子:

class BankAccount:
    def __init__(self, balance):
        self.__balance = balance
        
    def deposit(self, amount):
        self.__balance += amount
        
    def withdraw(self, amount):
        if amount <= self.__balance:
            self.__balance -= amount
        else:
            print("Insufficient funds.")
            
    def __get_balance(self):
        return self.__balance

这个BankAccount类包含了一个私有属性__balance和一个私有方法__get_balance。__get_balance方法用于返回当前账户余额,只能在类的内部调用。

我们可以通过在类的外部使用下面的代码来访问公有方法和私有方法:

account = BankAccount(100)
account.deposit(50)
account.withdraw(30)
print(account._BankAccount__balance)
print(account._BankAccount__get_balance())

这里我们创建了一个名为`account`的BankAccount对象,并使用公有方法deposit和withdraw来存款和取款。然后,我们通过在变量名前面加上_BankAccount__来访问私有属性和方法。

需要注意的是,虽然Python中的私有属性和方法不能直接从外部访问,但它们并不是完全私有的。通过使用上面提到的方式,仍然可以从外部访问它们。因此,使用私有属性和方法时需要小心,不要将其视为绝对的安全措施。

总结

本文介绍了Python中的类、对象、方法和属性,以及类的继承、多态和私有属性和方法等相关概念和技术。掌握面向对象编程的基础知识对于Python编程来说是至关重要的,它可以帮助我们更好地组织代码、复用代码、提高代码的可读性和可维护性,从而更好地完成我们的编程任务。

标签:__,Python,self,面向对象,say,方法,hello,属性
From: https://blog.51cto.com/jzj2023/6165545

相关文章

  • 20230402-Python学习里程碑-day1
    Python基础-变量与数据类型4月2安装python注意:1、勾选ADDpythontopath(可以避免手动添加Path路径)2、选择安装路径(可以避免后续使用Pycharm时,配置解析器路径)安装Pycharm选择解析器:默认安装完后,创建一个工程项目,创建xxx.py文件,你会发现NoPythoninterpreterco......
  • Python配置文件管理之ini和yaml文件读取
    当我们设计软件时,我们通常会花费大量精力来编写高质量的代码。但这往往还不够,一个好的软件还应该考虑其整个系统,如测试、部署、网络等。其中最重要的一个方面是配置管理。良好的配置管理应允许在任何环境中执行软件而不更改代码。最常见的配置包括数据库认证配置、部署服务器的主......
  • Python面试题究极篇01
    目录Python面试题第一章深浅拷贝是什么魔法方法new和init有什么区别python的可变和不可变数据类型是什么什么是生成器,有什么应用场景数据库的三大范式是什么mysql有哪些索引类型,分别有什么作用事务的特性和隔离级别Python面试题第一章深浅拷贝是什么浅拷贝和深拷贝:浅拷贝是在......
  • python电子商务网站用户行为分析
    1importos2importpandasaspd345#修改工作路径到指定文件夹6os.chdir("C:\Users\86184\Desktop\文件集\data")78#第一种连接方式9#fromsqlalchemyimportcreate_engine1011#engine=create_engine('mysql+pymysql://root:[email protected].......
  • Python 数据结构与算法详解
    一、数据结构与算法1、算法提出1.算法概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机按照确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。算法是独立......
  • Python图形处理
    一、PillowPIL:PythonImagingLibrary,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。由于PIL仅支持到Python2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python3.x,又加入了许多新特性,因此,我们可以直接安......
  • Python邮件发送接收实战
    一、电子邮件Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务。几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的。我们来看看传统邮件是如何运作的。假设你现在在北京,要给一个香港......
  • Python3连接MySQL
    一、安装引入pymysql模块1、安装pipinstallPyMySQL2、Pycharm中引入pymysql3、在文件中引入模块importpymysql如果系统不支持pip命令,可以使用git命令下载安装包安装(也可以手动下载):$gitclonehttps://github.com/PyMySQL/PyMySQL$cdPyMySQL/$python3setup.pyinsta......
  • Python ORM Pony 常用操作(增删改查)
    Pony是一个高级的对象关系映射器ORM框架。Pony它能够使用Python生成器表达式和lambdas向数据库编写查询。Pony分析表达式的抽象语法树,并将其转换为SQL查询。支持SQLite,MySQL,PostgreSQL和Oracle等数据库,本文主要介绍PythonORMPony中常用操作,及数据增加、删除、修改和查询。......
  • python - 邮件发送
    因为公网ip是动态的,想做一个在ip发生改变后邮件提醒1.首先需要开启smtp服务开启后复制授权密码2.邮件发送importsmtplibfromemail.mime.textimportMIMETextFrom='[email protected]'#发件人邮箱To=Frompwd='ZZZZZZZZZZZZZZZZ'#授权码smtp=sm......