Python中__getattribute__和obj .__ dict __ ['x']之间的区别?(Difference between __getattribute__ and obj.__dict__['x'] in python?)
我知道在Python中,每当你访问一个类/实例变量时,它会调用
__getattribute__
方法来获得结果。 不过,我也可以直接使用obj.__dict__['x']
,并得到我想要的。我有点困惑,有什么不同? 另外,当我使用
getattr(obj, name)
,它在内部调用__getattribute__
或obj.__dict__[name]
吗?提前致谢。
I understand that in python, whenever you access a class/instance variable, it will call
__getattribute__
method to get the result. However I can also useobj.__dict__['x']
directly, and get what I want.I am a little confused about what is the difference? Also when I use
getattr(obj, name)
, is it calling__getattribute__
orobj.__dict__[name]
internally?Thanks in advance.
原文:https://stackoverflow.com/questions/34543516
最满意答案
line.points()
返回1-d坐标数组:[x1, y1, x2, y2, ..., xn, yn]
如果你需要{x,y}点:
var points = line.points(); for (var i = 0; i < points.length / 2; i++) { var point = { x : points[i * 2], y : points[i * 2 + 1] }; console.log(point); };
line.points()
returns 1-d array of coordinates:[x1, y1, x2, y2, ..., xn, yn]
if you need {x, y} points:
var points = line.points(); for (var i = 0; i < points.length / 2; i++) { var point = { x : points[i * 2], y : points[i * 2 + 1] }; console.log(point); };
相关问答
更多-
您可以删除任何特定形状,如下所示:figureOld.remove(); You can remove any specific shape like this: figureOld.remove();
-
根据所遵循的WebSocket草案版本,至少有两个WebSocket握手协议。 KinectJS可能使用较旧的实现。 有关正确的握手协议的详细信息,请参阅最新的官方WebSocket草案 。 There are at least two WebSocket handshake protocols out there depending on the WebSocket draft version being followed. KinectJS is likely using an older implem ...
-
听起来你的sphinxapi.php文件太旧了。 使用已安装的sphinx版本中的那个。 It sounds like your sphinxapi.php file is too old. Use the one from the version of sphinx you have installed.
-
getValues()返回一个JavaScript 2d数组,尝试类似: firstName.setValue(dataValues[0][0]); getValues() returns a JavaScript 2d array, try something like: firstName.setValue(dataValues[0][0]);
-
lineArray应声明为char *的数组,而不是指向char的指针: char *lineArray[MAX_LINES]; 另外,请考虑当您进入while循环时会发生什么:您的代码具有未定义的行为,因为您正在访问从未初始化的lineArray[x] ,并且将包含垃圾值。 您应该使用fgets来将整行读入line ,然后将其复制到lineArray 。 像这样的东西: while (fgets(line, sizeof(line), file) != NULL) { lineCount++; ...
-
line.points()返回1-d坐标数组: [x1, y1, x2, y2, ..., xn, yn] 如果你需要{x,y}点: var points = line.points(); for (var i = 0; i < points.length / 2; i++) { var point = { x : points[i * 2], y : points[i * 2 + 1] }; console.log(point); }; line ...
-
你用过 split('', $line) 这就告诉Perl将$line分成单独的字符。 我认为你的意思是使用 split(' ', $line) 这告诉Perl将$line分成“单词”(用空格分隔的字符序列)。 You used split('', $line) That tells Perl to split $line into individual characters. I think you meant to use split(' ', $line) This tells Perl to ...
-
为了匹配一组字符串与一组模式,我相信你需要这样的东西: $patterns = @( ... ) Get-Content sample.txt | % { $count = 0 foreach ($p in $patterns) { if ($_ -match $p) { $count++ } } if ($count -eq $patterns.Length) { $_ } } 或者像这样: $patterns = @( ... ) $content = Get-Conten ...
-
我认为你应该做的是在ajax调用的端点中返回一个JSON对象。 如果我现在正确理解它你尝试在ajax请求中读取python脚本的输出,这不是正常的工作流程。 正常的工作流程将是请求 (客户端,您的浏览器) - > 服务器 (在您的情况下是脚本,但它应该真的是一个服务器) - >响应 (这可以是一个json对象或html,在您的情况下它只是控制台输出。) 所以你需要做的是改变你的pyhton脚本,它将控制台输出提供给服务器的端点,并且该端点应该返回一个JSON响应。 这是一个使用Flask(一个简单的pyth ...
-
据我所知,答案是否定的。 Kineticjs在你给出的容器中创建canvas DOM元素,这就是大多数人使用div元素作为容器的原因,这就是为什么如果直接放置画布它将无法工作。 问题是,它不应该改变你的代码。 你只需要调用getCanvas().getElement()而不是你对画布的常规引用,你以前的所有代码都可以工作。 这是一个jsfiddle 。 From what I know the answer is no. Kineticjs create the canvas DOM element wit ...