【问题标题】:Pass required argument to optional将必需的参数传递给可选的
【发布时间】:2018-05-20 05:44:31
【问题描述】:

尝试制作一个棋盘,如果只有一个参数,则必须是正方形(如果有两个参数,则必须是矩形)。

代码示例:

class Game:
    def __init__(self,h,w=h): # lookie-lookie 
       self.board = [[0 for i in range(w)] for j in range(h)]

我的期望:

b = Game(2)
b.board
#should return [[0,0],[0,0]]
b = Game(2,1)
b.board
#should return [[0],[0]]

我得到了什么:

NameError: name 'h' is not defined

我应该如何解决它?

【问题讨论】:

    标签: python function syntax arguments


    【解决方案1】:

    在函数定义时,对传递给可选参数的值进行评估,但是,在那一刻,h 没有定义。您可以改为使用标记值作为可选参数的占位符:

    class Game(object):
        def __init__(self,h,w=None):
            if w is None:
               w = h
    

    如果您使用的是 Python 2,请记住子类化 object

    【讨论】:

    • 已经做到了。只是寻找一些我不知道的 Python 特性。还是谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2019-03-17
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    相关资源
    最近更新 更多