8

I am building a solution with various classes and functions all of which need access to some global consants to be able to work appropriately. As there is no const in python, what would you consider best practice to set a kind of global consants.

global const g = 9.8 

So I am looking for a kind of the above

edit: How about:

class Const():
 @staticmethod
 def gravity():
 return 9.8
print 'gravity: ', Const.gravity()

?

asked Aug 14, 2013 at 6:49
1
  • Doesn't work. Anyone can change Const.gravity or just replace the Const class entirely. The lack of anything like const is a deliberate design decision; Python makes it very difficult to enforce that code won't touch something it shouldn't. Instead, if you're not supposed to touch something, standard practice is to just not touch it. Commented Aug 14, 2013 at 7:04

2 Answers 2

13

You cannot define constants in Python. If you find some sort of hack to do it, you would just confuse everyone.

To do that sort of thing, usually you should just have a module - globals.py for example that you import everywhere that you need it

answered Aug 14, 2013 at 6:52

3 Comments

I suspected "As there is no const in python" :/
how do you name your consts? all caps? or something like c_gravitation?
11

General convention is to define variables with capital and underscores and not change it. Like,

GRAVITY = 9.8

However, it is possible to create constants in Python using namedtuple

import collections
Const = collections.namedtuple('Const', 'gravity pi')
const = Const(9.8, 3.14)
print(const.gravity) # => 9.8
# try to change, it gives error
const.gravity = 9.0 # => AttributeError: can't set attribute

For namedtuple, refer to docs here

answered Jul 20, 2016 at 11:04

1 Comment

This is the closest implementation of const..

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.