voyou
Joined 15 years ago
Joined 15 years ago
In both cases, you can share behaviour between objects by putting that behaviour in another object and attaching it in a special way to the objects that should have similar behaviour - in JavaScript it's called __proto__, in Python it's called __class__, etc. Python (and Ruby, Smalltalk, and others) introduce an additional "meta" level of shared behaviour between all these class objects, whereas JavaScript (and Self) don't, but that's a comparatively technical implementation detail. Most languages other than JavaScript are include slightly more language-level support for one particular pattern of using this shared behaviour, which gives users of these languages a strong hint as to how to use these capabilities.
The addition of a class keyword to JavaScript is good because it emphasises what JavaScript shares with other dynamic OO languages.
I'm not sure I understand what you're saying here, but I don't think this is right. cleaned_data is a dictionary, and so the second argument to get is a default value to use if there is no value corresponding to the key. So, in your example, if there's no value for "formfield1" in cleaned_data, it would return a string with a space in.
This is probably not what you want to do. cleaned_data will always contain values for declared form fields, so the only way the default would be used is if you've made a mistake in specifying the key (for instance, if there's a typo and you've written 'formfeild1' instead of 'formfield1'). If you've made that kind of mistake, you don't want the program to continue using a single space instead of the valid data (you'll lose data) - you want the program to report that there's something wrong.
So I think you should probably use
form.cleaned_data['formfield1']
which will do the same thing if formfield1 is a real field name specified in the form, but will raise an exception if it isn't.Can you say more about that? I can't make any sense of it. In a 1 hour electronics lesson, you'ld presumably cover the gates, i.e., propositional calculus. In a first logic module, you'ld learn that and another, richer, form of logic, the predicate calculus. You'ld also learn about the proof procedures for both, which ought to lead on to learning the (to my mind, interesting and important) fact that there's a mechanical procedure that's guaranteed to prove or disprove any argument in propositional calculus, but there's no such procedure for predicate calculus. Later logic courses would probably include some formal semantics, so you'ld learn about the (again, to my mind significant) distinction between what makes something true, and how we prove that something is true. Did you learn all these things in your one hour high school electronics lesson? Or are they somehow not "meaningful" or "complicated"?
The idea that the end of a block is invisible isn't really right, though. The newline doesn't end the block. The block ends at the next line containing non-whitespace text at a lower indentation level. In other words, it only ends when it becomes visible that it has ended.
In C++, directly using pointers to access arrays is often discouraged, in favour of using the standard collection types and their associated iterator types. So in code that follows this style, it is possible to warn about uses of pointer arithmetic, and the core C++ guidelines do suggest such a warning. But the guidelines also point out that "this rule would generate a huge number of false positives if applied to an older code base": https://github.com/isocpp/CppCoreGuidelines/blob/master/CppC...
This sounds a lot like PyJS: http://pyjs.org/