我正在逐字阅读python官方文档。
在3.3中。特殊方法名称3.3.1. Basic customization
它在<div class="preview" id="widget"> </div> ///the 1920x1080 weather div created using php
<div id="canvas-out"></div> ///this is where the canvas is generated
<script>
$(document).ready (function(){
html2canvas($("#widget"), {
proxy: 'html2canvasproxy.php',
onrendered: function(canvas) {
canvas.id = "thecanvasid";
theCanvas = canvas;
document.body.appendChild(canvas);
$("#img-out").append(canvas);
var canvas = document.getElementById('thecanvasid');
var dataURL = canvas.toDataURL();
var uploadurl='upload.php';///this url converts the base url to a jpeg and uploads it
$.post("demo_test_post.asp",{ data: uploadurl });
} ///on rendered
}); ///html2canvas
});////document ready
基本自定义下指定了16种特殊方法,我将它们收集如下:
object
问题在于其中三个不是In [47]: bc =['__new__', '__init__', '__del__', '__repr__', '__str__', '__bytes__',
'__format__', '__eq__', '__le__', '__lt__', '__eq__',
'__ne__', '__ge__', '__gt__', '__hash__', '__bool__']
In [48]: len(bc)
Out[48]: 16
的有效属性
object
Object是所有类的基础。 2. Built-in Functions — Python 3.6.3 documentation
它没有递归基类。
In [50]: for attr in bc:
...: if hasattr(object,attr):
...: pass
...: else:
...: print(attr)
...:
__del__
__bytes__
__bool__
,__del__
,__bytes__
为类&#39;对象&#39;定义的方法在哪里?
答案 0 :(得分:0)
为“对象”类定义
__del__
,__bytes__
,__bool__
的方法在哪里?
object
未定义它们。这些是您可以在类上实现的特殊方法。
误解可能是因为文档说object.__bool__
,但object.
只是意味着它是对象的方法(在“实例”意义上)如果实现。
同样,该文档页面列表中的后续示例也显示了使用class.__subclasscheck__
的元类的特殊方法。这并不意味着它总是被实现,更像是如果实现它可以在类上使用。
答案 1 :(得分:0)
__del__
绝对不能存在 object
- 它在类中的存在会改变垃圾收集器处理其实例的方式,因此在object
上使用此方法会使任何上课没有。
__bool__
。 object
无需覆盖该行为。
我不确定__bytes__
的内容是什么,我认为如果不存在(或类似内容),则默认为__str__
。