Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python语言中,是否可以创建一个以实例变量作为参数的实例方法: var.method()?

在Python语言中,是否可以创建一个以实例变量作为参数的实例方法: var.method()?
EN

Stack Overflow用户
提问于 2021-10-24 04:49:01
回答 2查看 46关注 0票数 0

我已经在这个问题上挣扎了很长一段时间:我已经开始创建一个解决数独的代码,到目前为止,我已经成功地解决了大部分问题。我创建了一个名为" Sudoku“的类,它包含一个实例变量:带有所有插入数字的数独网格。

我还创建了一些方法,允许我访问或修改部分数独,目前还没有问题。但现在我必须引入一个新的实例变量,即带有数字注释的数独网格。问题出在我之前写的方法上。

代码是:

代码语言:javascript
运行
AI代码解释
复制
    def get_line(self, line):
    if 0 < line < 10:
        return self.sudoku[9*(line-1):9*line]
    return None

正如您在我刚刚编写的方法中所看到的那样

代码语言:javascript
运行
AI代码解释
复制
self.sudoku

(" Sudoku“是包含带有插入数字的网格的实例变量,它是一个包含81个元素的列表,这些元素是逐行插入的数独的数字),我直接修改了sudoku变量。但是现在我不能使用同样的方法访问带有注释的网格,因为它将返回数独的行。

我在想我能不能做这样的事

代码语言:javascript
运行
AI代码解释
复制
self.sudoku.get_line()

代码语言:javascript
运行
AI代码解释
复制
self.annotations.get_line()

其中我使用了一个方法,该方法将我在调用方法本身之前编写的变量作为参数。有没有可能写出这样的方法呢?

我知道有一些其他的方法可以解决这个特定的问题,但我想知道在Python中是否可以实现这样的事情。

感谢所有试图帮助我的人,我在其他地方找不到解决这个问题的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-24 09:32:05

好吧..。如果网格中的每个方块都包含一个数字和一个注释,那么每个方块都应该是一个类的实例,例如:

代码语言:javascript
运行
AI代码解释
复制
class SudokuSquare():
    def __init__(self, number=None, annotation=None):
        super().__init__(self)
        self.number, self.annotation = number, annotation

    def __str__(self):
        return '%s' % (self.number or '')

如果您使用这些类的实例填充列表,而不是纯整数,那么当您获取行时,您将立即获取所有内容。不需要有两个平行的网格。

然后,我的另一个建议是使用列表列表来表示行和列,如下所示:

类Sodoku():

代码语言:javascript
运行
AI代码解释
复制
def __init__(self):
    self.rows = []
    for _ in range(9):
        self.rows.append([ SukokuSquare() for _ in range(9) ])

def get_line(self, num):
    if num < 1 or num > 9:
        return None

    return self.rows[num-1]

实例化类Sudoku将为您提供一个数独对象,其中包含9行的列表,每行包含9个SudokuSquare的列表,每行都有一个用于存储numberannotation的位置。

现在,如果我想将第9行位置9的数字设置为值6,我会这样做:

字谜=数独() puzzle.get_line(9)8.number =6

但是,我仍然直接访问包含行(行)的列表,也许我不想这样做。然后您可能需要另一个名为SudukoRow的类,它有一个get_square方法……

我会把那部分留给你来试着弄清楚...

票数 0
EN

Stack Overflow用户

发布于 2021-10-24 09:09:33

如果我没理解错的话,你想

代码语言:javascript
运行
AI代码解释
复制
self.foo.getline(fie)
self.bar.getline(fum)

等同于

代码语言:javascript
运行
AI代码解释
复制
self.getline(foo, fie)
self.getline(bar, fum)

(有点像让getline拥有不同的“自我”)?

这就是Python,可能有一些可怕的技巧可以使用,但让foo和bar成为实现getline()的单独类的实例不是最明显的解决方案吗,Sudoku类可以委托给它们?

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

https://stackoverflow.com/questions/69696874

复制
相关文章
Python 的 __.call()__ 方法:创建可调用实例
带有 .__call__() 方法的类实例的行为类似于函数,它提供了一种灵活方便的方法来为你的对象添加功能。作为一个 Python 开发者,了解如何创建和使用可调用实例是一项宝贵的技能。
数据STUDIO
2023/10/23
6070
Python 的 __.call()__ 方法:创建可调用实例
【Java变量】 局部变量、成员变量(类变量,实例变量)、方法参数传递机制
.29.
2023/10/25
3200
【Java变量】 局部变量、成员变量(类变量,实例变量)、方法参数传递机制
Autofac创建实例的方法总结
在一个生命周期域中,每一个依赖或调用创建一个单一的共享的实例,且每一个不同的生命周期域,实例是唯一的,不共享的。
喝茶去
2019/04/16
1.1K0
Python类变量和实例变量区别
类变量:定义在类里面,通过类名或对象名引用,如果是通过对象名引用,会先找有没有这个同名的实例变量,如果没有,引用到的才是类变量,类变量的更新,只能通过类名,形如 类名.a = 55 ,不要指望通过实例引用类变量来更新类变量
王大力测试进阶之路
2019/10/25
1.5K0
Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性
https://www.cnblogs.com/poloyy/p/15178423.html
小菠萝测试笔记
2022/03/23
1.4K0
Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性
以编程方式创建Vue.js组件实例
最近参与了一个Vue.js项目,项目中需要能够以编程方式创建组件。通过编程,意思是使用JavaScript创建和插入组件,而无需在模板中编写任何内容。
前端知否
2020/03/23
8K3
python类成员变量和实例成员变量
print 'need %f hour(s)'% (distance/self.speed)
用户7886150
2020/12/20
1.5K0
python判断文件是否存在、不存在则创建_python判断文件是否存在,不存在就创建一个的实例…「建议收藏」
以上这篇python判断文件是否存在,不存在就创建一个的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
全栈程序员站长
2022/07/05
6.3K0
【Python】列表判断是否存在使用方法和代码实例
判断在实际生活中的应用举例:比如注册一个邮箱账号,邮箱账号是不是不允许重复的,那么就可以把这个注册的新的邮箱账号做一个判断,如果在原有的邮箱账号了列表里就不可以注册了,告诉用户账号重复了,如果不在就可以注册。
python自学网
2022/03/31
7690
【Python】列表判断是否存在使用方法和代码实例
【说站】python类变量和实例变量的对比
1、类变量是所有对象共有的,其中一个对象改变其价值,其他对象得到的是改变后的结果。
很酷的站长
2022/11/23
8700
【说站】python类变量和实例变量的对比
python3的实例方法
self.food = that        #属性food 绑定到that, self.food 可以在其他类内函数调用
py3study
2020/01/03
3890
【说站】JavaScript创建Object实例的方法
2、使用对象字面量表示法。对象字面量是对象定义的简写形式,目的是简化创建包含大量属性的对象的过程。
很酷的站长
2022/11/24
4210
【说站】JavaScript创建Object实例的方法
Python中动态创建类实例
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块。如下: def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_m
kongxx
2018/05/14
2.6K0
点击加载更多

相似问题

是否可以将散列传递给实例方法以创建实例变量?

29

在Python中以类实例作为参数调用方法

21

是否可以在不知道Python实例的情况下将实例方法作为参数传递?

41

作为默认参数的Python实例变量

33

作为可选参数的python实例变量

52
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档