
Why is this a misuse? Classes are largely just namespaces to start with, and if you want to use them solely for that purpose, it's all there for you. If you wanted to make you intention even more obviously, you could do something like:
class NoInstance(object):
... def __new__(cls): ... raise NotImplementedError ...
class signin(NoInstance):
... def handle(*args): ... print("Hello", args) ...
signin()
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in __new__ NotImplementedError
signin.handle('some','args','here')
Hello ('some', 'args', 'here')
Maybe some other name than NoInstance would be better: NamespaceOnly? In any case, one helper class lets you use existing syntax exactly as you desire.
On Tue, Sep 16, 2014 at 10:43 PM, Tennessee Leeuwenburg tleeuwenburg@gmail.com wrote:
Hi Ali,
Thanks for the suggestion. I would prefer to avoid that just because it's a potential misuse of classes, and I suspect may lead to confusion for other developers. Otherwise that's exactly what I want to do.
Cheers, -T
On 17 September 2014 15:27, Ali Alkhatib al2@stanford.edu wrote:
This may be a misuse of classes, but why can't you make a class and then not instantiate it?
class signin: def handle(): return "this works" signin.handle() # returns "this works"
On Tue, Sep 16, 2014 at 10:19 PM, Tennessee Leeuwenburg tleeuwenburg@gmail.com wrote:
I would like to be able to use named sections to organise my code, much an inline submodules, bit without using classes or functions to organise them. I would use this if I had a group of related functions which were not written in an object-oriented-style, possibly due to not needing any shared state. Rather than break these out into a new file, I would like to just be able to use internal structure to declare the relationship. I've used the keyword 'block' to indicate the start of a named block.
For example,
block signin: def handle_new_user(): do_it()
def handle_existing_user(): do_it()
while True: try: signin.handle_existing_user(): except: signin.handle_new_user()
do_other_stuff()
At the moment, I would have to either break out into more files, or somewhat clumsily co-opt things like functions or staticmethods. I think that supporting named blocks or inline module declarations would really help me organise some of my code much better. It could also provide a more seamless way to decide to break out into a new file. Once a named block got big enough, I could easily create a new file and import those functions into the same namespace.
I hope this makes sense and that I'm not overlooking anything obvious.
Cheers, -Tennessee
Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
-- Ali Alkhatib Department of Computer Science PhD Student - Stanford University
--
Tennessee Leeuwenburg http://myownhat.blogspot.com/ "Don't believe everything you think"
Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/