<html>
<head>
<title>HTML Document</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body>
<div id="hover-id">
Hello World
</div>
<script>
jQuery(document).ready(function($){
$(document).on('mouseover', '#hover-id', function(){
$(this).css('color','yellowgreen');
});
$(document).on('mouseout', '#hover-id', function(){
$(this).css('color','black');
});
});
</script>
</body>
</html>
Означает ли это, если вы определили класс python с cdef all self. * атрибуты должны быть определены cdef?
blockquote>Да. Это явно указано в документации :
Атрибуты в классах cdef ведут себя иначе, чем атрибуты в обычных классах:
blockquote>
- Все атрибуты должен быть предварительно объявлен во время компиляции
- ...
Вы можете с радостью сохранить строку, указав атрибут типа объекта :
cdef public object msg
Внутренне причина в том, что в
cdef class
нет словаря, который экономит место и ускоряет доступ к атрибуту, но это означает, что он не может иметь произвольный атрибуты, добавленные во время выполнения. Это достаточно похоже на использование__slots__
в обычном классе Python.