2.1Python之类和实例

Python进阶之类变量(类属性)和实例变量(实例属性) Python进阶之类变量(类属性)和实例变量(实例属性) 无论是类属性还是类方法,都无法像普通变量或者函数那样,在类的外部直接使用它们。可以将类看做一个独立的空间,则类属性其实就是在类体中定义的变量,类方法是在类体中定义的函数。 在类体中,根据变量定义的位置不同,以及定义的方式不同,类属性又可细分为以下 3 种类型: 一、类体中、所有函数之外:此范围定义的变量,称为类属性或类变量; 二、类体中,所有函数内部:以“self.变量名”的方式定义的变量,称为实例属性或实例变量; 三、类体中,所有函数内部:以“ 阅读详情

类

  类(class)是一个用户自定义类型,开发者可以将其实例化以获得实例(instance),实例表示这种类型的对象。在Python中,类就是对象,开发者可以像对其他对象那样处理函数,可以在调用函数时传递一个类作为参数,也可以返回一个类作为函数调用的结果。任何对象,即使是一个类对象,都有一个类型。在Python中,类型和类也都是第一类对象。类对象的类型也被称为该类的元类(metaclass)。对象的行为主要是由该类对象的类型确定的。这也适用于类:类的行为也是主要由该类的元类确定的。

class语句

  class语句是创建一个类对象最常用的方法。如下:

class classname(base_classes):
    statement(s)

classname是一个标识符。该标识符是一个在执行完class语句之后被绑定到类对象的变量。base_classes是一个使用逗号分隔的表达式序列,这些表达式的值必须是类对象。例如:

class C(B1,B2):  #B1和B2都是类
   statement(s)

最后,请注意,class语句并不直接创建新类的任何一个实例,而是定义了在以后调用这个类创建实例时,所有实例共有的属性集(即类对象属性)。

类对象属性

   通常可以通过将一个值绑定到类体中的一个标识符上来指定类对象的一个属性(即类属性)。例如:

class C1(object):
    x =  23
print C1.x                 #print:23

类对象C1包含一个名为x的属性,该属性被绑定为值23。我们应该知道,在实例被创建时,任何类属性都由该类的所有实例隐式共享。
  类对象会隐式设置某些类属性。属性__name__是类名标识符字符串。属性__bases__是类的基类的类对象的元组。例如:

print C1.__name__, C1.__bases__            #print: C1, (<type ‘object’>)

类对象还包含一个属性__dict__,这个属性是该类的字典对象,被用来保存所有其他属性。对于任何类对象C、任何对象x,以及任何标识符S(除了__name__、__bases__和__dict__),C.S等于C.__dict__[‘S’]=x。例如:

C1.y = 45
C1.__dict__['z']= 67
print C1.y,C1z                 #print: 45, 67

实例

  类的实例是一个带有任意名称的属性的Python对象,开发者可以绑定和引用这些属性。要想创建一个类的实例,可以调用类对象,就像该对象是一个函数一样。每个调用都将返回一个类型为该类的新实例:

anInstance = C1()

开发者可以调用内置函数isinstance(I, C),并使用一个类对象作为参数C。如果对象I是类C或类C的任何子类的一个实例,则instance将返回True,否则返回False。

__init__

  当一个类定义或继承了一个名为__init__的方法时,调用该类对象将对新实例隐式执行__int__方法以执行任何需要的与实例相关的初始化。该调用中传递的参数必须对应于__init__的参数,除了参数self。例如:

class C6(objec):
    def __init__(self, n);
          self.x = n

创建类C6的一个实例:

anInstance = C6(42)

__init__的主要目的就是绑定,并因此创建新创建的实例的属性。__init__方法不能返回一个值,否则,Python将引发一个TypeError异常。
对于任何实例z,z..__class__是z所属的类对象,而z..__dict__是z用来保存其他属性的字典。例如:

print anInstance.__classs__.__name__, anInstance .__dict__              #print: C6, {'x' : 42}

对于任何实例z,任何对象x和任何标识符S(除了__classs和__dict__),z.S = x等于z.__dict__[‘S’] = x。例如:

z.y = 45
z.__dict__['z'] = 67
print z.y, z.z        #print: 45, 67

__new__

  每个新型累都有(或者继承了)一个名为__new__的静态方法。当开发者调用C(*args, **kwds)来创建类C的一个实例时,Python将首先调用C.__new__(C,*args, **kwds)。Python使用__new__的返回值x作为新创建的实例。然后,Python将调用C.__init__(x,*args, **kwds),但是只有在x确认是C的一个实例,或者C的任何一个子类时才会调用该方法。例如:语句x = C(23)等同于:

x = C.__new__(C, 23)
if isinstance(x, C):
    type(x).__init__(x, 23)

object.__new__可以创建其接受为第一个参数的类的一个新的和未初始化的实例。如果这个类包含一个__init__方法,则该方法将忽略其他参数,但是,如果除了第一个参数,该方法还接受了其他参数,并且第一个参数的类不包含__init__方法,则该方法将引发一个异常。下面通过实现Singleton设计模式来演示上面内容。

class Singleton(object):
    ## @var __Instance
    __Instance = None

    @staticmethod
    def GetInstance():
        if Singleton.__Instance == None:
            Singleton.__Instance = Singleton()
        return Singleton.__Instance

    def __new__(cls, *args, **kv):    
        print "__new__"    
        if Singleton.__Instance == None:
            Singleton.__Instance = object.__new__( cls )  
            print "Singleton.__Instance:", Singleton.__Instance                  
        return Singleton.__Instance

    def __init__(self, x):
        print "__init__"
        print "self:", self
        self.x = x
        print x

    def PrintX(self):
        print self.x

anInstance = Singleton(23)
anotherInstance = Singleton(32)

运行结果:

这里写图片描述

分析:

从上面运行结果我们可以看出,创建一个新实例时,先调用new方法,再调用init方法。单实例通过重写new方法,第二次实例化时,new返回上次的实例,然后该实例再次调用init方法。

python之类成员和实例成员   Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的类成员和实例成员。  类中定义的变量又称为数据成员,或者叫广义上的属性。可以说数据成员有两种:一种是实例成员(实例属性),另一种是类成员(类属性)。   实例成员一般是指在构造函数__init__()中定义的,定义和使用时必须以self作为前缀;   类成员是在类 阅读详情

相关推荐

Kotlin原生AI Agent框架Koog:为JVM开发者打造类型安全、企业级智能体开发方案

AI Agent作为当前人工智能应用开发的核心范式,通过赋予大语言模型(LLM)自主规划、工具调用和环境交互能力,正在重塑软件智能化进程。其技术原理基于智能体架构,通过提示工程、函数调用和记忆机制,将LLM从单纯的文本生成器转变为能够执行复杂任务的工作流引擎。这一技术价值在于显著降低了构建智能应用的开发门槛,同时保持了高度的灵活性和可扩展性。在实际应用场景中,AI Agent广泛落地于智能客服、代码助手、数据分析自动化等领域,成为连接大模型能力与具体业务需求的关键桥梁。本文聚焦的Koog框架,正是针对JVM

weixin_42594419的博客 395

Python的类对象、实例对象、类属性、实例属性、类方法、实例方法

类属性和类方法不会被复制,但是我们可以通过实例对象调用它们,这是因为每个创建的实例对象都会添加__class__属性,该属性指向类对象,因此能够通过实例对象调用类属性和类方法。总之,类和实例是面向对象编程的基本概念,类属性和实例属性用于存储数据,类方法和实例方法用于定义类的行为。不同的对象可以有不同的实例属性值,但它们共享相同的类属性和类方法。当执行python脚本时,Python解析到类对象时,会给类对象在内存中分配一块区域,在这处内存中存储类对象的所有属性和方法。它们在类的所有实例之间共享。

chen的博客 3761

别再只会插拔了!深入Linux内核,手把手调试USB热插拔中断(以高通平台为例)

本文深入探讨了Linux内核中USB热插拔中断的调试方法,特别针对高通平台提供了详细的实战指南。从硬件基础到内核机制,再到中断调试工具和常见问题排查,帮助开发者系统性地解决USB设备识别问题。通过监控中断状态、分析处理流程和高级调试技巧,提升USB热插拔的稳定性和性能。

weixin_29161785的博客 429

Python笔记

一切以代码最简、性能最高为原则,宁愿空间换时间 1.前100中,对“3的倍数”的数求和 print(sum(i for i in range(0,101,3)))#对“3的倍数”的数求和 print(sum(i for i in range(0,101,2)))#对“2的倍数”的数求和 1683 2550 PS:不要求最简的话,使用while循环、for循环都可以得出结论 2.将字符串文本“¥12345.6789元”,加上千元内随机金额后,变为保留2位小数的字符串文本 import random#导入

天道哥哥的博客 6446

虚幻商城 蓝图汇总

虚幻引擎是一个非常强大和灵活的游戏开发工具,拥有众多的蓝图可以帮助我们更高效地工作。

一碗清深的博客 1508

【Qt图书管理系统】5.完整版源码及下载地址

Qt图书管理系统完整源码下载。

小鱼酱的博客 7001

php概念以及相关知识

PHP(PHP: Hypertext Preprocessor的缩写,中文名:“PHP:超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为*.php。 语言解析 [1]PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速

孤独症有所好转 2386

【现代人形机器人:从物理建模到大模型驱动的控制与学习】第1章 机器人建模回顾

本章建立读者进行后续控制 / 优化 / 学习工作的数学与计算基础。内容分为三大块:刚体运动学:位姿表示、坐标变换、旋转参数与李代数/李群(指数映射、twist)多关节机构的正/逆运动学:DH 与 POE 两种建模、雅可比矩阵推导、数值/解析逆解方法与奇异性问题约束动力学:拉格朗日公式、牛顿—欧拉递归算法、接触/冲击模型、受约束系统的方程(拉格朗日乘子与互补性条件)每一节同时给出与练习题。假设读者已具备线性代数(矩阵、特征分解、SVD)、多变量微积分与基础力学(牛顿第二定律)知识。

u012133341的博客 185

python双_集成python双版本详解

最近要准备学习Python,由于版本上的差异,不知道要学哪个,现在好多东西都是基于python2基础的,但是python2在2020年左右就可能停止了,所以干脆决定两个都装上吧!首先上官网上下载两个python的版本文件。这个没什么好说的,下载下来就行,下载后安装。我的安装环境是2003,python的版本分别为2.7.8和3.4.2,其他版本的大同小异。首先是2.7.8 的安装,安装的时候记得把...

weixin_39889544的博客 224

杰理AC695N芯片跑iic接口的oled驱动分享

本文介绍了一个基于IIC接口的0.96寸OLED显示屏驱动程序,适用于SSD1306控制器。驱动采用软件模拟IIC方式,支持字符、数字、字符串、汉字和图片显示,测试平台为杰理AC695N系列芯片。硬件参数包括128×64分辨率,IIC接口(地址0x78),使用IO_PORTA_02(SDA)和IO_PORTA_03(SCL)引脚。驱动包含OLED主文件(oled.c/h)、软件IIC实现(soft_iic.c/h)和字体/图片数据文件(oledfont.h/bmp.h),可通过修改soft_iic.h中的引

qq_42014563的博客 882

YOLO骨干网络改进-第1篇:深度解析YOLOv8的C2f模块原理与实现

首先,需要将自定义的C2f模块注册到Ultralytics的模块字典中。# 注册自定义模块"""自定义的C2f模块。"""# 自定义YOLOv8s配置文件:yolov8s_custom.yamlscales:# Backbonebackbone:# Headhead:# 加载自定义模型# 训练模型imgsz=640,batch=16,device=0,workers=8,设计理念:C2f模块是C3模块的演进,通过增加梯度分支来丰富梯度流,提升特征表示能力。结构原理。

2201_76125393的博客 110

python2 爬虫_python 爬虫实例(二)

环境:OS:Window10python:3.7描述打开下面的网址,之后抓取其中的图片https://music.163.com/#/artist/album?id=101988&limit=120&offset=0安装一些库文件首先看你的网页版本,查看方法,打开【https://sites.google.com/a/chromium.org/chromedriver/downloads】之后显示...

weixin_39859988的博客 223

基于STM32+华为云设计的智慧农业灌溉系统(2023升级版)(158)

本项目设计一种基于STM32的智慧农业监测系统。该系统能够检测空气温度、湿度、光强度和土壤湿度等关键指标,并自动调节浇水量,实现作物生长环境的精细化管理。同时,本项目还支持本地LCD屏幕数据显示和通过ESP8266上传数据到华为云物联网平台,同时搭建流媒体服务器实现摄像头远程监控。最重要的是,本项目将利用Qt开发Android手机APP,使用户可以远程查看监测情况,了解农作物生成情况。

1万+

python对象是类的实例_Python面向对象之类和实例

1.类的定义定义是用过class关键字class Student(object):passclass 后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的。如果没有合适的继承类,就使用object类,这个是所有类最终都会继承的类。定义好了Student类,就可以根据Student类创建出Student的实例,创建实例是通过类名+()实...

weixin_39552768的博客 840

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python 类的使用(2) 之类变量

类的使用上次已经写过一篇基本框架了,其中有提到一些类变量的使用方式,但是实际上类变量需要深究的东西还有很多哦。本文简要介绍了一下类使用中可能碰到的类变量问题,并且对类变量在各种使用情况下进行了简要剖析,主要是对类变量的修改等内容。相信掌握了这些内容后对类的使用将会更加清楚与深刻。 希望能帮助到大家!

keepaware的博客 3430

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python 面向对象编程之类和实例

python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。 仍以Student类为例,在Python中,定义类是通过class关键字: class Student(objec...

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 374

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python之类和类的继承

类定义: class ClassName 类对象:类名直接调用 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用 __init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上 self代表类的实例,而非类 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。 ...

qq_26800889的博客 726

python 类的使用(1) 之类使用的基本框架

我觉得Python的使用可以分三个阶段:1.直接写代码阶段,即一行一行的运行,没有任何函数。2.开始使用函数式编程。3.开始使用类。 类对于python来说真的非常好用,类不仅仅是在大型工作中可以用,即使在小型工作中也能够使用,使代码易于重用,易于构建,易于修改等等。快快使用或者学习起来吧! 本文将会分几个部分来对类的使用细化讲解,内容通俗易懂,希望能帮助到大家!

keepaware的博客 1667

Python之类

Python的类的常见用法

xiaopihai1234567的博客 1609

python 之属性_python之类属性和实例对象属性 原

python中的实例对象属性(Instance Attributes)就是跟这个对象绑定的简单的数据而已。实例对象属性一般在__init__函数中初始化,但是在其它方法中也是可以随意添加新的属性。class Foo(object):def __init__(self, name):super(Foo, self).__init__()self.name = name// 实例对象属性def...

weixin_39759107的博客 219

python的类变量和实例变量_python之面向对象之类变量和实例变量

#Auther Bob#--*--conding:utf-8 --*--#这里的变量全部都是实例变量class Role(object):def __init__(self,name,role,wepon,life_value):#实例变量self.name = nameself.role = roleself.wepon = weponself.life_value = life_value#类...

weixin_39851457的博客 91

python类与实例_Python3之类和实例

面向对象的重要概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如学生类Student,而实例是根据类创建出来的一个个具体的对象,每个对象都拥有相同的方法,单各自的数据可能不同。以Student为列,在Python中,定义类是通过class关键字>>> class Student(object):... passclass关键字后面紧接是类名,即Student,类名...

weixin_39869791的博客 73

Python 概念之类和对象

##类和对象 ##类变量和实例变量 ##变量的私有化属性 ##类的继承 ##抽象类

weixin_44851971的博客 254

Python3之类和实例继承和多态

  在OPP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类,父类或超类   例如,我们已经编写了一个名为Animal的class,有一个run()方法可以直接打印 >>> class Animal(object): ... def run(slef): ...

abtmh02622的专栏 148

python基础之类,对象,类方法,实例方法详讲

类: 类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。 一个类可以找到多个对象。比如图纸,手办的图纸,老虎,东北虎,这都是类。类是一个抽象的概念。 类的组成由属性和方法组成,属性可以称为成员变量,方法可以称为成员函数。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。 Python3中的obj

weixin_44782176的博客 1100
上一篇: 2.0Python之基本知识
下一篇: 2.2Python之*与** 参数问题
暮-成-雪
博客等级 码龄12年 5328粉丝 319原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值