Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python实例变量

Python实例变量
EN

Stack Overflow用户
提问于 2020-04-10 17:52:02
回答 2查看 233关注 0票数 0

在声明类实例变量时,是否可以使用对类方法的调用来初始化构造函数中的一个实例变量?例如,假设我有一个Button类和methodA()类中的一个方法,该方法将名为'active‘的变量设置为False。我可以通过调用该方法来初始化“active”吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Button:
    def __init__(self):
        *snip*
        self.methodA()

    def methodA(self):
        self.active = False

这个技巧对于初始化我的实例变量'active‘是正确的吗?

EN

回答 2

Stack Overflow用户

发布于 2020-04-10 18:01:42

是的,这是可以做到的。事实上,在Python中,任何非静态方法都可以为类的对象初始化新的数据成员。但是,建议始终在__init__()中初始化成员,因为在创建和初始化对象时初始化要使用的成员被认为是一种很好的做法。

票数 1
EN

Stack Overflow用户

发布于 2020-04-10 22:56:25

在你的评论中添加上下文后,你的问题就更有意义了。可以,您可以用另一种方法设置对象的任何属性。实际上,由于Python的动态类型,即使在初始化对象之后也可以设置它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Example:
    pass

e = Example()
e.foo = 'bar'
e.foo  # returns 'bar'

但是,通常您希望在对象的__init__方法中初始化对象的所有属性,因为它更易于维护,并且当您不记得是否定义了特定属性或该属性来自何处时,您总是知道在哪里查找。

在您的示例中,使用类所具有的所有属性来初始化类,然后调用方法来修改它们会更有意义。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Button:
    def __init__(self):
        *snip*
        self.active = False
        self.color = 'red'
        self.linewidth = 2

    def activate(self):
        self.active = True
        self.color = 'green'
        self.linewidth = 5

    def deactivate(self):
        self.active = False
        self.color = 'red'
        self.linewidth = 2

现在你可能注意到了,我们有代码复制-- __init__方法基本上复制了deactivate方法中的行!尽管如此,将所有属性都放在__init__方法中对于提高可读性是非常有用的。我们该怎么办?

考虑以下折衷:使用None值初始化所有属性,然后调用deactivate方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 class Button:
    def __init__(self):
        *snip*
        self.active = None
        self.color = None
        self.linewidth = None
        self.deactivate()

    def activate(self):
        self.active = True
        self.color = 'green'
        self.linewidth = 5

    def deactivate(self):
        self.active = False
        self.color = 'red'
        self.linewidth = 2

这结合了两者的优点:我们的代码是可读的( __init__方法基本上是“初始化具有这些属性的按钮,然后停用它”),但也没有代码重复。

This question进一步解释了为什么在__init__方法中创建所有属性更可取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61145836

复制
相关文章
Python类变量和实例变量区别
类变量:定义在类里面,通过类名或对象名引用,如果是通过对象名引用,会先找有没有这个同名的实例变量,如果没有,引用到的才是类变量,类变量的更新,只能通过类名,形如 类名.a = 55 ,不要指望通过实例引用类变量来更新类变量
王大力测试进阶之路
2019/10/25
1.5K0
python类成员变量和实例成员变量
print 'need %f hour(s)'% (distance/self.speed)
用户7886150
2020/12/20
1.4K0
Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性
https://www.cnblogs.com/poloyy/p/15178423.html
小菠萝测试笔记
2022/03/23
1.4K0
Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性
【说站】python类变量和实例变量的对比
1、类变量是所有对象共有的,其中一个对象改变其价值,其他对象得到的是改变后的结果。
很酷的站长
2022/11/23
8290
【说站】python类变量和实例变量的对比
python中全局变量、局部变量、类变量、实例变量简析
因为python为动态语言,处理变量的方式与一些静态语言(比如C++)不大一样,在这里对这些变量进行小小的总结
用户7886150
2020/11/23
1.8K0
深入理解python类的实例变量和类变量
a = aa()     #将a投入aa这个类中,进行实例化# print a.add()   #这个结果显然易见# #下边两条指令各起何作用?结果是输出两个 20 么?还是两个13?还是? aa.w = 20   
py3study
2020/01/09
1.4K0
Python面向对象中的类变量,实例变量怎么来理解?
前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个类变量和实例变量的问题,这里拿出来给大家分享下,一起学习下。
前端皮皮
2022/08/17
1.7K0
Python面向对象中的类变量,实例变量怎么来理解?
Python面向对象编程-类和对象-实例变量和类变量
实例变量是指属于特定对象的变量。每个类的实例都具有自己的实例变量,它们的值可以不同。在上面的示例中,Person 类的 name 和 age 属性都是实例变量,因为它们属于特定的 Person 对象。
玖叁叁
2023/04/19
8470
Python类变量和实例变量,傻傻分不清楚
前几天在Python最强王者交流群有个叫【Chloé】的粉丝问了一个关于Python类变量和实例变量的问题,这里拿出来给大家分享下,一起学习。
Python进阶者
2022/03/10
1K0
Python类变量和实例变量,傻傻分不清楚
Shell 变量引用实例
初学 Shell 编程时,对变量各种引用使用不太熟悉,走了很多弯路,本文记录变量引用的一些用法,希望对大家有所帮助。
叨叨软件测试
2020/04/14
2.2K0
静态变量和实例变量的区别
静态变量是被static修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。静态变量可以实现让多个对象共享内存。
唐怀瑟
2018/08/30
1.2K0
Python|如何对比多个实例的变量值
前文说如何对比文件中的差异并举例几个方法,读者朋友也留言提出其他的解决方法比如 :ide,beyond compare 。本文继续说另外一个需求多个配置文件如何对比。
用户1278550
2021/10/18
1.3K0
linux awk 内置变量实例
它处理文本的速度是快得惊人的,现在很多基于shell 日志分析工具都可以用它完成。特点是设计简单,速度表现很好,本文将介绍awk内置变量。
阳光岛主
2019/02/19
2.8K0
Java中静态变量(类变量)、实例变量、局部变量和成员变量
学习Java的过程中,一开始很容易被这些各种变量绕晕,这篇博客主要介绍了这几种变量之间的关系和区别。
用户8639654
2021/07/19
2.3K0
【Java变量】 局部变量、成员变量(类变量,实例变量)、方法参数传递机制
.29.
2023/10/25
2190
【Java变量】 局部变量、成员变量(类变量,实例变量)、方法参数传递机制
OC知识--成员变量(属性,实例变量)的相关知识
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-Member-variable.html 1. 成员变量介绍 1. 成员变量解释 我们把Objective-C中写在类声明的大括号中的变量称之为成员变量(也称为属性,实例变量)。 举例: @interface Iphone : NSObject { // 成员变量声明 int _cpu; // cup 0 int _
程序员充电站
2018/05/31
2.6K0
java中类变量和实例变量的实质区别
相对于static(静态的)或说类的, 本章开始提到的都是instance(实例的)或说对象的。 每个对象都有自己的一份儿对象域或实例域,相互之间没关系, 不共享。 我们可以从对象中访问实例变量。
马克java社区
2021/03/15
2K0
java中类变量和实例变量的实质区别
点击加载更多

相似问题

Python -实例变量访问

20

Python pickle实例变量

31

Python:抽象实例变量?

20

python:类变量和实例变量

33

类变量与实例变量--Python

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文