Python面向对象之成员相关知识总结

下面就是详细讲解“Python面向对象之成员相关知识总结”的完整攻略:

Python面向对象之成员相关知识总结

成员属性

实例属性

实例属性是绑定在对象上的,每一个对象可以拥有不同的实例属性,在函数内部以self进行访问。

class Car:
  def __init__(self):
    self.color = 'white'
    self.speed = 0

car1 = Car()
car2 = Car()

car1.color = 'red'
car2.speed = 60

类属性

类属性是绑定在类上的,所有的对象都共同拥有同样的类属性。在函数内部以类名.类属性名进行访问。

class Car:
    car_type = '普通车'
    def __init__(self,color,speed):
        self.color = color
        self.speed = speed

car1 = Car('white',50)
car2 = Car('black',65)

print(Car.car_type) # 普通车

成员方法

实例方法

实例方法是绑定在对象上的,可以使用对象进行调用。

class Car:
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed

    def show_info(self):
        print("这辆车是%s,速度为%d" % (self.color, self.speed))

car1 = Car('white',50)
car1.show_info() # 这辆车是white,速度为50

类方法

类方法是绑定在类上的,使用@classmethod装饰器进行定义。

class Car:
    car_type = '普通车'
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed

    @classmethod
    def show_car_type(cls):
        print ("这是%s" % cls.car_type)

Car.show_car_type() # 这是普通车

静态方法

静态方法不与对象或类绑定,使用@staticmethod装饰器进行定义。

class Car:
    car_type = '普通车'
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed

    @staticmethod
    def show_car_info(color, speed):
        print ("这辆%s车速度为%d" % (color, speed))

Car.show_car_info('white',50) # 这辆white车速度为50

成员访问控制

私有成员

Python中没有绝对的“私有”,但是可以使用双下划线前缀进行指定为“私有成员”,可以强制不让从外部访问。

class Car:
    def __init__(self, color, speed):
        self.__color = color
        self.__speed = speed

    def show_info(self):
        print("这辆车是%s,速度为%d" % (self.__color, self.__speed))

    def set_color(self,color):
        self.__color = color

car1 = Car('white',50)
car1.show_info() # 这辆车是white,速度为50
car1.__color = 'black'
car1.show_info() # 这辆车是white,速度为50

保护成员

Python中的保护成员使用单下划线前缀,在声明时提醒使用者不要直接访问。但实际上可以从外部进行访问。

class Car:
    def __init__(self, color, speed):
        self._color = color
        self._speed = speed

    def show_info(self):
        print("这辆车是%s,速度为%d" % (self._color, self._speed))

car1 = Car('white',50)
car1._color = 'black'
car1.show_info() # 这辆车是black,速度为50

示例说明:

示例一:将汽车类的颜色改为红色

class Car:
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed

    def show_info(self):
        print("这辆车是%s,速度为%d" % (self.color, self.speed))

car1 = Car('white',50)
car2 = Car('black',65)

car1.color = 'red'
car1.show_info() # 这辆车是red,速度为50

在实例属性中,color是绑定在对象上的实例属性,使用car1.color = 'red'即可改变颜色属性为红色。

示例二:静态方法打印汽车的全称

class Car:
    car_type = '普通车'
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed

    @staticmethod
    def show_car_info(car_brand, color, speed):
        print ("这辆%s%s车速度为%d" % (car_brand, color, speed))

Car.show_car_info('卡车', '红色', 60)

静态方法不与对象或类绑定,只需要使用@staticmethod定义方法,并在方法内部进行操作即可。在这个示例里,加入了car_brand参数,输出的改为了汽车的全称。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python面向对象之成员相关知识总结 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 基于Mediapipe+Opencv实现手势检测功能

    基于Mediapipe+Opencv实现手势检测功能攻略 手势检测是计算机视觉相关领域的一个重要问题,可以应用于很多领域,如交互式系统、游戏开发、可穿戴设备等。Mediapipe是谷歌发布的一个实时计算机视觉处理框架,而OpenCV是一个开源的计算机视觉库,综合使用这两个工具可以实现手势检测功能。 本攻略将详细介绍如何基于Mediapipe和OpenCV实现…

    python 2023年6月6日
    00
  • Python取出字典中的值的实现

    Python中取出字典中的值有多种实现方法,以下是其中的几种方式: 字典中单个值的获取 直接通过键名获取 可以用字典中的键名直接获取对应的值,使用方法为字典名[键名],示例如下: user_info = { "name": "Tom", "age": 20, "gender": …

    python 2023年5月13日
    00
  • django加载本地html的方法

    Django加载本地HTML的方法 在Django中,我们可以使用模板来渲染HTML页面。但是,有时我们需要加载本地HTML文件,而不是使用模板。本攻略将介绍如何在Django中加载本地HTML文件的方法,包括使用静态文件和使用视图函数。 方法1:使用静态文件 在Django中,我们可以使用静态文件来加载本地HTML文件。以下是使用静态文件加载本地HTML文…

    python 2023年5月15日
    00
  • Python中4种实现数值的交换方式

    下面是Python中4种实现数值的交换方式的完整攻略。 一、使用第三个变量 使用第三个变量是最朴素的交换方式,先将一个变量的值保存到第三个变量中,再将第二个变量的值赋给第一个变量,最后将第三个变量的值赋给第二个变量。示例代码如下: a = 1 b = 2 c = a a = b b = c print(a, b) # 输出2, 1 二、使用加法和减法 使用加…

    python 2023年5月13日
    00
  • Python列表和集合的效率大比拼

    Python中的列表和集合都是常用的数据结构,它们都可以存储多个元素,但是它们的实现方式不同,因此它们的效率也不同。下是Python列表和集合效率大比拼的完整攻略: 列表和集合的实现方式 Python中的列表是一种动态数组,它可以存储意类型的元素,并且支持索引和切片操作。列表的实现方式是使用数组来存储元素,当数组空间不足时会自动扩容。因此,列表的插入、删除和…

    python 2023年5月13日
    00
  • 60道硬核Python面试题,论面霸是如何炼成的

    60道硬核Python面试题攻略 本文将为您提供“60道硬核Python面试题,论面霸是如何炼成的”的完整攻略,涵盖了Python的各个方面,包括基础语法、数据类型、函数、类、模块、异常处理等。通过学习本文,您可以更好地掌握Python编程语言,提高自己的编程技能。 基础语法 1. Python中的注释有哪些类型? Python的注释有两种类型:单行注释和多…

    python 2023年5月14日
    00
  • 如何使用Python实现数据库中数据的动态查询?

    以下是使用Python实现数据库中数据的动态查询的完整攻略。 数据库中数据的动态查询简介 在数据库中,动态查询是指根据用户输入的条件进行查询的查询。在Python中可以使用pymysql连接到MySQL数据库,并使用SELECT语句实现动态查询。 步骤1:连接到数据库 在Python中,使用pymysql连接MySQL数据库。以下是连接到MySQL数据库的基…

    python 2023年5月12日
    00
  • Python中的取整、取余运算方法

    下面是Python中取整和取余运算方法的详细攻略。 取整运算 在Python中有两种取整运算方法,分别是向下取整和向上取整。 向下取整 向下取整就是将数字往下取整到最接近的整数,比如将3.8取整后得到的结果是3. 在Python中,可以使用math.floor()函数进行向下取整操作。示例如下: import math num = 3.8 result = …

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