首页 > 编程语言 >python 类和对象

python 类和对象

时间:2024-12-02 08:59:43浏览次数:7  
标签:name python self Dog 对象 age def speak

python 类和对象


类和对象是面向对象编程的核心概念,而面向对象是我们python编程中的一个重要编程方法,本篇文章将带你初识类和对象。

1.什么是类

类是一种用于创建对象的蓝图或模板。它定义了对象将拥有的属性和方法。属性是对象的状态或数据,而方法是对象可以执行的操作或函数。在Python中,定义一个类使用class关键字。

class Dog:
    def __init__(self, name, age):
        self.name = name  # 属性:名字
        self.age = age    # 属性:年龄

    def bark(self):
        print(f"{self.name} says woof!")  # 方法:叫唤

在这个例子中,Dog是一个类,它有两个属性:name和age,以及一个方法bark。__init__是一个特殊的方法,称为构造器,用于在创建对象时初始化对象的属性。

2.什么是对象

对象是类的实例。通过类,我们可以创建具有特定属性值的对象。在Python中,使用类名后跟一对圆括号(可以包含初始化参数)来创建对象。

# 创建Dog类的两个对象
d1 = Dog("Buddy", 3)
d2 = Dog("Charlie", 5)

# 调用对象的方法
d1.bark()  # 输出: Buddy says woof!
d2.bark()  # 输出: Charlie says woof!

在这个例子中,d1和d2是Dog类的两个对象,它们分别有自己的name和age属性,并且可以调用bark方法。

3.面向对象的三大特征

3.1封装

封装是将类的数据和操作数据的代码绑定在一起,并对外部隐藏其内部细节的过程。在Python中,可以通过定义私有属性(通常以双下划线开头)和使用属性装饰器(@property)来实现封装。

class Person:
    def __init__(self, name, age):
        self.__name = name  # 私有属性
        self.__age = age    # 私有属性

    @property
    def name(self):
        return self.__name

    @name.setter
    def name(self, new_name):
        if isinstance(new_name, str):
            self.__name = new_name
        else:
            raise ValueError("Name must be a string")

    @property
    def age(self):
        return self.__age

    @age.setter
    def age(self, new_age):
        if isinstance(new_age, int) and new_age >= 0:
            self.__age = new_age
        else:
            raise ValueError("Age must be a non-negative integer")

# 使用封装后的类
person = Person("Alice", 30)
print(person.name)  # 输出: Alice
person.age = 31
print(person.age)   # 输出: 31
# person.__name = "Bob"  # 这行代码会报错,因为__name是私有属性

3.2继承

继承是面向对象的另一个重要特征,它允许我们创建一个新类(子类),这个新类可以继承一个或多个现有类(父类)的属性和方法。这有助于代码重用和扩展。

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

    def speak(self):
        raise NotImplementedError("Subclass must implement abstract method")

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

# 使用继承后的类
dog = Dog("Rex")
cat = Cat("Whiskers")
print(dog.speak())  # 输出: Rex says Woof!
print(cat.speak())  # 输出: Whiskers says Meow!

3.3多态

多态允许一个接口或父类引用指向子类对象,并通过这个引用调用子类的重写方法。

# 使用上面的Animal, Dog, 和 Cat类来展示多态
def animal_speak(animal):
    print(animal.speak())

# 多态的使用
animal_speak(dog)  # 输出: Rex says Woof!
animal_speak(cat)  # 输出: Whiskers says Meow!

在这个例子中,animal_speak函数接受一个Animal类型的对象,并调用它的speak方法。由于Dog和Cat类都继承了Animal类并重写了speak方法,因此animal_speak函数可以处理这两种类型的对象,并正确地调用它们各自的speak方法。这就是多态性的体现。

4.总结

类和对象是Python面向对象编程的基石。通过定义类,我们可以创建具有特定属性和方法的对象,从而构建出更加模块化和可维护的代码。继承、封装、多态等特性进一步增强了Python的灵活性和强大功能。掌握这些概念,将帮助我们编写出更加高效、可重用和易于维护的Python程序。

标签:name,python,self,Dog,对象,age,def,speak
From: https://blog.csdn.net/2201_75622573/article/details/144154627

相关文章

  • Kali Linux怎么开python虚拟环境
    相信很多朋友再学习的过程中都会遇到一些pip失效,或者报错的时候,他们要求我们要使用虚拟环境,但是不知道怎么搭建,下面这篇文章就来告诉你如何搭建虚拟环境,这个方法在所有Linux的服务器都通用,就两行命令安装venv模块(Python3.3及以上版本自带,无需安装)python3-mvenvmyenv......
  • D85【python 接口自动化学习】- pytest基础用法
    day85pytest指定目录或文件执行测试用例学习日期:20241201学习目标:pytest基础用法--pytest指定目录,文件执行测试用例学习笔记:pytest指定目录或文件执行测试用例终端执行用例pytest不跟目标目录或文件,执行根目录下所有符合规则的测试用例终端执行用例pytest指定......
  • python基础学习6和7
    模块类与对象模块内置模块time,random,os,json第三方模块requests,pandas,numpy,....自定义模块xxx.py常见的内置模块hashlib模块该模块主要是进行数据加密的作用。常见的加密方式:sha256()【可逆】md5()【不可逆】importhashlibinfo='123456'#......
  • C++ : 四、面向对象编程(1)
    (一)面向对象的概念面向对象编程是一种编程范式,它以对象为核心来组织程序结构。对象就是在现实世界中,某个具体的实体在计算机世界中的映射和体现。在C++中,对象是类的实例,类是一种用户自定义的数据类型,它封装了数据(成员变量)和操作这些数据的函数(成员函数)。比如:银行中实体的柜......
  • C++ : 五、面向对象编程(2)
    (一)对象的生存期1.对于局部定义的对象,当程序控制流到达该对象定义处时,调用构造函数,程序控制走出该局部域时,调用析构函数。2.对于静态局部定义的对象,当程序控制流到达该对象定义处时,调用构造函数,整个程序结束时时,调用析构函数。voidfun(){ Complexc1(11,12); staticCom......
  • 类与对象(中)
    类的默认成员函数默认成员函数是什么呢?默认成员函数指的是用户没有显式实现,编译器会自动生成的成员函数被称为默认成员函数。同时,我们还要注意两个问题:第一,编译器默认生成的函数行为是什么,是否会满足我们的需求。第二,编译器默认生成的函数不满足我们的需求,我们需要自己实现,那......
  • [Python学习笔记4]——函数
    目录 1.函数的定义2.传递实参2.1位置实参2.2关键字实参2.3给形参指定默认值3.返回值3.1返回简单值3.2将形参的默认值指定为空字符串以实现实参可选3.3返回字典或列表4.传递列表4.1向函数传递列表4.2在函数中修改列表4.3禁止函数修改列表(使用列表切......
  • Python.task4
    Python.task4定义*函数使用关键字def,后跟函数名与括号内的形参列表。*函数内容以冒号起始,并且缩进。*return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。调用参数默认参数为参数指定默认值是非常有用的方式。调用函数时,可以使用......
  • 大数据学习记录,Python基础(3)
    算术运算符```pythona=3b=4print(a+b)#7print(a-b)#-1print(a*b)#12print(a/b)#0.75print(a%b)#3print(a**b)#81print(a//b)#0整除比较(关系)运算符注意:=是赋值运算符,==是比较运算符比较运算符的结果一定是bool类型的扩......
  • python学习task3.4
    上次博客已经写过数据类型方面的笔记一、变量1.变量,望文生义,就是可变化的量。name='Crossin'myVar=123price=5.99visible=True“=”的作用是把右边的值赋予给左边的变量。python中创建变量的方法很简单,不需要像c一样先要定义变量,而是直接能给变量赋值2.变量在一......