我正在尝试从嵌套在A类中的B类中调用值,并在C类中使用它。 我得到了AttributeError:
class A():
class B():
a = 1
class C():
b = 2
c = B.a + b
AttributeError: class B has no attribute 'a'
我也尝试调用From'A',Pycharm认出它,但python仍然得到AttributeError:
class A(object):
class B(object):
a = 1
class C(object):
b = 2
c = A.B.a + b
AttributeError: class A has no attribute 'B'
有人知道如何使用它吗? 感谢
答案 0 :(得分:1)
问题是,当您调用A
时,不会构建类模板(A.B.a
)。也就是说,A
尚未绑定到类。
尝试此解决方法:
class A():
class B():
a = 1
现在单独创建C
(A
已定义):
class C():
b = 2
c = A.B.a + b
从C
引用A
:
A.C = C
这可以通过元类来完成,但在这里可能会被过度杀死。
答案 1 :(得分:0)
在编译时,类A的类定义不完整,因此您无法访问嵌套类中父类中定义的类,变量和方法。
您可以尝试按照@Reut Sharabani的建议分离类定义。
答案 2 :(得分:0)
您无法通过名称访问该类,而仍会执行类定义语句。
<script>
$(document).foundation();
$(document).ready(function() {
var dataTable = $('#example').DataTable(
{
"language": {
"url": "resources/DataTables-1.10.12/DataTables-1.10.12/hebrew.json"
},
"columnDefs": [ {
"targets": [2,3],
"orderable": false
},
{ responsivePriority: 1, targets: 0 },
{ responsivePriority: 2, targets: 1 },
{ responsivePriority: 3, targets: 2 },
{ responsivePriority: 4, targets: 3 }
],
responsive: true,
});
$("#searchbox").keyup(function() {
dataTable.fnFilter(this.value);
});
$("#searchbox").on("keyup search input paste cut", function() {
dataTable.search(this.value).draw();
});
});
</script>
要解决此问题,您必须推迟执行这些语句:
class A(object):
class B(object):
a = 1
class C(object):
b = 2
c = A.B.a + b # here class A statement is still executed, there is no A class yet