我想做以下事情(在 Python 3.7 中):
class Animal:
def __init__(self, name, legs):
self.legs = legs
print(name)
@classmethod
def with_two_legs(cls, name):
# extremely long code to generate name_full from name
name_full = name
return cls(name_full, 2)
class Human(Animal):
def __init__(self):
super().with_two_legs('Human')
john = Human()
Run Code Online (Sandbox Code Playgroud)
基本上,我想__init__用父类的工厂类方法覆盖子类的方法。然而,所写的代码不起作用,并引发:
TypeError: __init__() takes 1 positional argument but 3 were given
Run Code Online (Sandbox Code Playgroud)
我认为这意味着作为变量super().with_two_legs('Human')传递。Humancls
1)为什么这不像写的那样工作?我假设super()会返回超类的代理实例,所以cls是Animal对的吗?
2)即使是这种情况,我也不认为这段代码实现了我想要的,因为 classmethod 返回 的实例Animal,但我只想以Human与 classmethod 相同的方式进行初始化,有什么方法可以实现我的行为想?
我希望这不是一个很明显的问题,我发现文件上super() …
与之前的问题类似,我想创建一个冻结/不可变的字典。具体来说,初始化后,用户ValueError在尝试使用__delitem__和__setitem__方法时应该得到一个 。
与前面的问题不同,我特别希望它成为一个子类,其中初始化类型仅限于特定的键和值类型。
我自己尝试完成此任务collections.UserDict失败了:
class WorkflowParams(UserDict):
def __init__(self, __dict: Mapping[str, str]) -> None:
super().__init__(__dict=__dict)
def __setitem__(self, key: str, item: str) -> None:
raise AttributeError("WorkflowParams is immutable.")
def __delitem__(self, key: str) -> None:
raise AttributeError("WorkflowParams is immutable.")
Run Code Online (Sandbox Code Playgroud)
当尝试使用它时:
workflow_parameters = WorkflowParams(
{
"s3-bucket": "my-big-bucket",
"input-val": "1",
}
)
Run Code Online (Sandbox Code Playgroud)
它失败了
Traceback (most recent call last):
File "examples/python_step/python_step.py", line 38, in <module>
workflow_parameters = WorkflowParams(
File "/home/sean/git/scargo/scargo/core.py", line 14, in __init__ …Run Code Online (Sandbox Code Playgroud) 我有两张桌子,我想要做的很简单,但同时也很复杂 - 如果有人能帮助我那会很棒.
我有以下表格......
Table A
ClientID
1
2
3
Table B
ClientID ID
1
1
3
Run Code Online (Sandbox Code Playgroud)
表B在表中有ClientID,表A也是如此.所以它们链接起来,我需要做的是将ID更新为唯一引用.
即clientID-UniqueID.例如,如果我更新了表BI,则希望它看起来像这样(顺序)
Table B
ClientID ID
1 1-1
1 1-2
3 3-1
Run Code Online (Sandbox Code Playgroud) 可以使用类似数学的语法定义工作因子函数/运算符吗?即使用!符号.
我想不出现有符号的任何用例,其中的事情可能是模棱两可的
!shell_escape总是在一条线的开头爆炸0!=1会True像往常一样,因为其他解释factorial(0) = 1将是SyntaxError: can't assign to literal或类似的错误)我有一个包含 2 列的文件,例如:
111, 3
122, 4
155, 3
192, 5
11, 9
123, 10
120, 23
Run Code Online (Sandbox Code Playgroud)
我怎样才能编写类似 ((111,122,155,192,11,123,120),(3,4,3,5,9,10,23)) 的数据。现在我想做的就是使用将其绘制在直方图中matplotlib。
请帮忙提供一些基本想法。!
我怎样才能写出function哪些应该返回嵌套在iterable中的每个值?
这是我想要完成的一个例子:
for i in function([1, 2, [3, 4, (5, 6, 7), 8, 9], 10]):
print(i, end=' ')
Run Code Online (Sandbox Code Playgroud)
预期产量:
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud) 我正在编写一个小程序,我想使用:
ans = int(input(print(multi,'x',num,'=')))
Run Code Online (Sandbox Code Playgroud)
这很好,除了在打印打印语句后没有提示的事实。喜欢:
49 x 7 =
None
Run Code Online (Sandbox Code Playgroud)
如果可能的话,如何删除“无”?我也确实搜索了这个问题,但是什么也没有在输入中返回空值。
"计算机科学只有两个难题:缓存失效和命名事物."
- 菲尔卡尔顿
当需要一些像下面这样的逻辑时,我正在努力想出一个明智的名字THING:
THING = object()
def do_something(my_dict, my_key=THING):
if my_key is not THING:
# some code which accesses the dict
my_dict[my_key]
else:
# some code which handles this case
Run Code Online (Sandbox Code Playgroud)
这里我们不能None用作默认值,因为它是一个可能的数据值.我敢肯定这是一个众所周知的技巧,所以有一个众所周知的名称,一个对象可以完成这项工作THING吗?什么是更明智的名字?
我有这个:
feature D - E
/
develop A - B C
Run Code Online (Sandbox Code Playgroud)
我想要这个:
feature C - D - E
/
develop A - B
Run Code Online (Sandbox Code Playgroud)
所有提交都已经推送到github.但是,它们只在我的私人分支中,所以如果我不得不重写历史,那就不是戏剧了.
什么是最简洁和/或最简单的方法来将提交C移出开发,并重新定义该功能?
可以说我有一个这样的列表:
newIndexVertList = [0, 1, 2, 2, 1, 20, 21, 21, 20, 3, 23, 22]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
newIndexVertList = [0, 1, 2, 2, 1, 4, 5, 5, 4, 3, 7, 6]
Run Code Online (Sandbox Code Playgroud)
这里,变换基于原始列表中按升序排列的数字位置.因此,在新的列表中,数字会根据逻辑被替换:
0 --> 0 0th position in sorted list
1 --> 1 1st position in sorted list
2 --> 2 2nd position in sorted list
3 --> 3 3rd position in sorted list
20 --> 4 4th position in sorted list
21 --> 5 5th position in sorted list
22 …Run Code Online (Sandbox Code Playgroud) python ×8
python-3.x ×3
class-method ×1
constructor ×1
dictionary ×1
factorial ×1
git ×1
histogram ×1
immutability ×1
inheritance ×1
input ×1
list ×1
matplotlib ×1
mysql ×1
naming ×1
sql ×1
syntax ×1