In C# I would go:
string UserName;
string Password;
But now, in Python:
class User:
UserName
Password
I recieve an error that UserName isn't defined. I can't declare a variable without a variable?
In C# I would go:
string UserName;
string Password;
But now, in Python:
class User:
UserName
Password
I recieve an error that UserName isn't defined. I can't declare a variable without a variable?
First of all, you should rewrite like this:
class User(object):
def __init__(self, username, password):
self.username = username
self.password = password
This way, username and password are instance variables instead of class variables (in your example, they are class variables -- all instance variables need to be defined in __init__ as properties of self). Then, you can initialize a User with whatever username and password you want, including None if you truly want them to have no value.
In Python, and many other languages, there is a value that means "no value". In Python, that value is None. So you could do something like this:
class User:
UserName = None
PassWord = None
Those sure sound like instance variables though, and not class variables, so maybe do this:
class User(object):
def __init__(self):
self.UserName = None
self.PassWord = None
Note how Python assigns the None value implicitly from time to time:
def f():
pass
g = f() # g now has the value of None
You can't. In Python, "Variables" are just names. A name always points ("is bound") to an object. It's convention to assign names that don't yet have a sensible value, but should be present, to None.
You might also be interested in my answer here.
In your code:
class User:
UserName
Password
UserName and Password are parsed as expressions. Since they have not been assigned at this point, you get a NameError.
In Python, a variable must be defined with a assignment statement before it can be used in an expression, otherwise you get a NameError. Note that "before" here means "execution order", not "source code order". There's a bit more to it (import statements, globals, namespace hacks), but let's keep it simple here.
The idiomatic way to define a variable "without a value" is to assign it the value None.
Also, your code looks like it really wants instance members, and not class members. The idiomatic way to do it, as recognized by some static analysis tools such as pylint, is:
class User(object):
def __init__(self):
self.username = None
self.password = None
Also, it is good Python style to derive all classes from "object", so you use new-style classes, and to name instance variable with the lowercase_with_underscore or initialLowerWithCaps convention. The InitialCaps style is quite universally reserved to class names.