首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Python】面向对象 ③ ( 构造函数 | 成员变量赋值问题 | 构造方法引入 | 构造函数可以同时定义成员变量 )

一、构造函数 1、成员变量赋值问题 在之前的博客中 , 定义的 Python 类 Student : class Student: name = None # 姓名 age = None...# 年龄 def info(self): print(f"姓名 : {self.name} , 年龄 : {self.age}") 如果要为其成员变量赋值 , 需要分别为...name 和 age 两个成员变量赋值 , s = Student() s.name = "Tom" s.age = 18 上述 2 个变量就写了 2 行代码 , 如果有十几个变量 , 那么就需要十几行代码..., 才能完成成员变量赋值的操作 ; 2、构造方法引入 使用构造方法 , 可以在一行代码内 , 为多个变量同时赋值 , 这样就可以减少代码量 ; 构造方法简介 : 构造方法函数名 : Python 类...; __init__() 构造方法中 , 接收两个参数 name 和 age , 分别赋值给 name 和 age 成员变量 ; 在 info() 方法中 , 将学生的 name 和 age 成员打印到控制台中

35230
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用 Apollo 为静态变量赋值的方法

    但是,在使用 Apollo 的时候,我们可能会遇到这样的场景: 在类中,想要为静态属性赋值。 我们且不考虑什么时候会出现这样的需求,仅考虑如果有这样的需求,我们应该怎么处理?...实际上,Apollo 仅支持直接为非静态属性赋值,因此当我们有这样的需求的时候,就需要我们变通一下,通过一些小技巧,来达成我们的目的了。...以下面的ApolloConfig代码为例,我们分别为非静态属性name和静态属性address赋值: @Configuration @EnableApolloConfig public class ApolloConfig...其中,我们使用@Value("${csdn.name:NONE}")为非静态属性name赋值,并添加了默认值NONE,即当我们没有在 Apollo 配置中心配置该属性值的时候,Apollo 会自动将NONE...作为默认值,赋值给name属性。

    2.8K10

    java中为final变量赋值的几种方式

    参考链接: 在Java中为静态最终static final变量分配值 java中为final变量赋值的几种方式  前言   使用final修饰变量,很多人第一时间想到的就是不可变。...然后以为变量必须得在声明的时候就为其赋初始值,其实不然,本文将详细讲解java中使用final修改的变量的赋值问题。 ...被final修饰的变量的几种赋值方式  1、被final修饰的变量有三种赋值方式。 2、被final static修饰的变量有两种赋值方式。 ...}  当你发现一个类的变量被final修饰但没被赋值,那么可以判断出它肯定会在构造函数里被赋值。...(因为倘若是set方法赋值,线程是不安全的,因为set方法可以被调用多次,而final变量只能被赋值一次)  被final static修饰的变量  1、在定义时直接赋值  public class Test

    2.5K10

    【小家java】java中为final变量赋值的几种方式

    前言 final修饰的变量,很多人第一印象就是不可变三个字。然后以为它只能在申明的时候就必须得赋值,其实不然,本文就重点讲述平时我们用到的final变量的赋值问题。...对被final修饰的变量进行赋值的几种方法 被final修饰的变量,有三种赋值方式。...先看第一种情况的变量 被final修饰的变量:三种赋值方式 在定义时直接赋值。...声明时不赋值,在constructor中赋值(最常用的方式) 声明时不赋值,在构造代码块中赋值 如果一个非final成员变量在定义的时候没有赋值,那么它只可能在构造函数里被赋值了(不考虑构造代码块的情况...(因为倘若是set方法赋值,现在是不安全的,因为set方法可以被调用多次,而final变量只能被赋值一次) 被final static修饰的变量:两种赋值方式 在定义时直接赋值.

    2.8K40

    使用下标给string类型赋值之后,cout输出变量为空的问题。

    今天写创建文件夹的时候,怎么创建都不会,反复修改,确定错误是出在了string类型的变量上面。...fileurl_s_cy.c_str(), 0)) { mkdir(fileurl_s_cy.c_str(),0); // 返回 0 表示创建成功,-1 表示失败...无则创建 但是我发现根本创建不了文件夹 我试着输出循环中的fileurl_s_cy[i],能够正常输出我想要的字符 但是当我输出fileurl_s_cy的时候出了问题,fileurl_s_cy至始至终为空...,长度也为空,导致无法正常创建文件夹 明明可以正常输出fileurl_s_cy[i],但是无法正常输出fileurl_s_cy,本以为是’\0’的问题,发现加上也无济于事,fileurl_s_cy整体长度依旧是...解决方法如下: 声明的时候改为std::string fileurl_s_cy(len,’\0’); 这样就可以正常使用下标赋值,输出以及整体输出 怕忘记,记录与此。

    5K40

    Tkinter mainloop() 循环的逻辑,以及变量为什么不会被重新赋值为初始值?

    1、问题背景在使用 Tkinter 开发 GUI 程序时,您可能会遇到这样的疑问:为什么在使用 window.mainloop() 循环时,变量不会被重新赋值为它们的初始值?...既然如此,为什么一个变量(例如 canvastext)可以被更新并保持更新状态?...也许我对 window.mainloop() 的作用完全误解了,但如果它确实使程序不断循环执行代码,那么为什么不将变量重新赋值为它们的初始值呢?...处理函数可以修改变量的值,但不会影响其他代码中的变量。也就是说,变量的值只会在处理函数中被修改,而在其他代码中不会被修改。...希望这篇技术文章能够帮助您理解 Tkinter window.mainloop() 循环的逻辑,以及变量为什么不会被重新赋值为初始值。

    28710

    【Groovy】Groovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )

    文章目录 一、字符串切割 1、使用 Java 语法切割字符串 2、使用 Groovy 语法切割字符串直接为变量赋值 3、数组赋值给变量 变量个数小于等于数组长度 二、完整代码示例 一、字符串切割 --...groovy-all, 3.0.5] println names 执行结果 : [org.codehaus.groovy, groovy-all, 3.0.5] 2、使用 Groovy 语法切割字符串直接为变量赋值...变量个数小于等于数组长度 如果字符串分割出的数组有 3 个元素 , 如果 赋值给 2 个变量 , 就将 前两个数组元素 进行赋值 ; 这里注意 : 赋值的变量 可以少于 分割的数组长度 , 不能多于数组长度..., 就将 前两个数组元素 进行赋值 // 注意 : 赋值的变量 可以少于 分割的数组长度 , 不能多于数组长度 , 否则会产生越界异常 def (group2, name2) = libName.split...2 个变量 , 就将 前两个数组元素 进行赋值 // 注意 : 赋值的变量 可以少于 分割的数组长度 , 不能多于数组长度 , 否则会产生越界异常 def (group2, name2) = libName.split

    8.2K30

    【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )

    引用计数垃圾回收算法示例说明 : ① 创建对象 : 创建一个 O 类型对象 o , 此时引用计数为 0 , 如果不将其赋值给一个变量 , 那么很快就会被回收 ; ② 变量 A 赋值 : 创建一个...O 类型对象 o , 将对象 o 其 赋值 给变量 A , 此时该对象 A 引用计数为 1 ; ③ 变量 B 赋值 : 创建一个 O 类型对象 o , 将对象 o...其 赋值 给变量 B , 此时该对象 B 引用计数为 1 ; ④ B 引用 A : 变量 B 中有 O 类型成员变量 , 将 A 赋值 给该成员变量 , 此时对象...B 引用计数变成 2 ; ⑤ A 引用 B : 变量 A 中有 O 类型成员变量 , 将 B 赋值 给该成员变量 , 此时对象 A 引用计数变成 2 ; 此时即使把...; ② 引用自救 : 将对象赋值给指定变量 , 这样可以避免被 GC 回收内存 ; 4.

    74620

    【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )

    文章目录 一、Groovy 构造函数中为成员赋值 二、Groovy 函数的参数传递与键值对参数 三、完整代码示例 一、Groovy 构造函数中为成员赋值 ---- Groovy 类没有定义构造函数 ,...但是可以使用如下形式的构造函数 , 为 Groovy 类设置初始值 ; new 类名(成员名1: 成员值1, 成员名2: 成员值2) 顺序随意 : 成员的顺序随意 , 没有强制要求 , 只需要 成员名...与 成员值对应即可 ; 个数随意 : 成员个数随意 , 可以为所有的属性赋值 , 也可以只为其中的部分属性赋值 ; 如下代码 : class Student { def name def...age } // 实例化 Student 类 // 正常赋值 def student = new Student(name: "Tom", age: 18) // 颠倒顺序赋值 def student2...1: 成员值1, 成员名2: 成员值2 类型的参数 , 这是键值对 map 类型的集合 ; 但是对于普通的函数 , 不能使用上述格式 , 如果出现 变量名1: 变量值1, 变量名2: 变量值2 样式的代码

    9.3K20

    踩坑:Spring静态变量构造函数注入失败(注入为null)问题的解决方案

    1、案例1:Spring对静态变量的注入为空 案例代码如下: @Component public class HelloWorld { /** * 错误案例:这种方式是不能给静态变量注入属性值的...this.HELLO_WORLD = HELLO_WORLD; } } 复制代码 解决方案二:@PostConstruct注解 因为@PostConstruct注解修饰的方法加在顺序在构造方法之后静态变量赋值之前...,所以可以通过该注解解决静态变量属性值注入失败问题: @Component public class HelloWorld { public static String HELLO_WORLD;...}") public static String helloWorld; @PostConstruct public void init(){ // 为静态变量赋值...,一个为null的成员变量调用sayHello()方法,NullPointException 异常是情理之中呀!

    1.4K00

    .NET----错误和异常处理机制

    前言   错误的出现并不总是编写程序的人的原因,有时应用程序会因为应用程序的最终用户引发的动作或运行代码的环境发生错误。无论如何,我们都应预测应用程序中出现的错误,并相应的进行编码。   ...例如,如果.NET运行库检测到栈已满,他就会抛出StackOverflowException异常。...其他可能会用到的异常类包括: StackOverflowException-------如果分配给栈的内存区域已满,就会抛出这个异常。如果一个方法连续地递归调用自己,就可能发生栈溢出。...OverflowException-----如果要在checked上下文中把包含-40的int类型数据强制转换为uint数据,就会抛出这个异常 MemberAccessException----------该类用于处理访问类的成员失败时所引发的异常...失败的原因可能的原因是没有足够的访问权限,也可能是要访问的成员根本不存在(类与类之间调用时常用) IndexOutOfException-------该类用于处理下标超出了数组长度所引发的异常 使用try

    66550

    【C++】构造函数初始化列表 ③ ( 构造函数 的 初始化列表 中 为 const 成员变量初始化 )

    构造函数初始化列表 总结 : 初始化列表 可以 为 类的 成员变量 提供初始值 ; 初始化列表 可以 调用 类的 成员变量 类型的 构造函数 进行成员变量初始化操作 ; 初始化列表 可以 使用 构造函数...中传入的 参数 ; 类初始化时 , 根据定义顺序 , 先调用 成员变量的 构造函数 , 然后调用外部类构造函数 , 析构函数正好相反 ; 实例对象 的 const 成员变量 必须只能在 初始化列表 中进行...初始化 , 所有的构造函数都要进行初始化操作 ; 一、构造函数 的 初始化列表 中 为 const 成员变量初始化 1、初始化 const 常量成员 如果 类 中定义了 被 const 修饰 的 成员变量...: 这里区分 初始化 与 赋值 , 初始化 是 变量 声明时 同时 为其 设置一个 初始化值 ; 赋值 是 变量 声明以后 , 再对变量进行赋值 ; const 成员变量 是常量 , 是 无法在声明后...进行赋值 的 , 因此 这里 必须在 构造函数的 初始化列表中 对 const 成员变量 进行赋值 ; 2、错误代码示例 - 没有初始化常量成员 在下面的 类 B 中 , 定义了常量 const int

    24230

    检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

    今天遇到了同样的问题,我们出现的问题是不定时出现日志出现报错信息: Error:检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败...,原因是出现以下错误: 8000401a。...检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 这使我很纠结,看了很多的信息后...方法一(推荐):   检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a   1....{000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

    6K50

    你是真的了解多态吗?谈谈你对多态的了解以及应用

    Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。 如Student类可以为Person类的子类。...1.3 多态-成员的特点 掌握了多态的基本使用后,那么多态出现后类的成员有啥变化呢?前面学习继承时,我们知道子父类之间成员变量有了自己的特定变化,那么当多态出现后,成员变量在使用上有没有变化呢?...多态成员变量 多态出现后会导致子父类中的成员变量有微弱的变化。看如下代码 父类子类都有同名的变量: ? 父类没有的情况下: ? 子类没有的情况下: ?...当子父类中出现同名的成员变量时,多态调用该变量时: 编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。没有,编译失败。 运行时期:也是调用引用型变量所属的类中的成员变量。...当子父类中出现同名的成员方法时,多态调用该变量时: 编译时期:参考引用变量所属的类,如果类中没有调用的方法,编译失败。 运行时期:参考引用变量所指的对象所属的类,并运行对象所属类中的成员方法。

    43220

    2019年一线大厂最全JVM面试100问!你能答对多少?

    前面是对类加载器的简单介绍,它的原理机制非常简单,就是下面几个步骤: 1.装载:查找和导入class文件; 2.连接: (1)检查:检查载入的class文件数据的正确性; (2)准备:为类的静态变量分配存储空间...虚拟机栈/本地方法栈 当你碰到过StackOverflowException这个异常的时候,有没有思考下为什么会出现这样的异常呢?...举个粟子:假设JVM参数-Xss设置为1m,如果某个方法里面创建一个128kb的数组,那这个方法在同一个线程中只能递归4次,再递归第五次的时候就会报StackOverflowException异常,因为虚拟机栈的大小只有...,虚拟机会检查老年代最大可用的连续空间是否大于新生代所有对象的总空间,如果大于,则此次Minor GC是安全的如果小于,则虚拟机会查看HandlePromotionFailure设置项的值是否允许担保失败...常量和 static 变量),编译后的代码(字节码)等数 堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配 栈:栈的结构是栈帧组成的,调用一个方法就压入一帧

    53230
    领券