Posts: 28
Threads: 13
Joined: Jan 2018
hello,
I have created a class 'User':
class User:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def __call__(self, name, gender, age):
print(name)
print(gender)
print(age)
user1 = User('dany wasser', 'gender: male', 21) I put this class in a file called saty.py
then I imported the file 'saty.py' in the interactive mode of the interpreter by:
import saty
the file was successfully imported.
now I want to call the single instance of this class 'user1' with all its attributes into the interactive mode of the interpreter. how can I do this?
>>> print ... ?
thanks in advance
Posts: 4,802
Threads: 77
Joined: Jan 2018
Aug-23-2018, 06:37 AM
(This post was last modified: Aug-23-2018, 06:41 AM by Gribouillis.)
If you only want to call the instance, you simply do
>>> user1() However, being callable is an uncommon feature for a class representing a user. In this case one would more traditionally define a conversion to string with a __str__() method.
class User:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def __str__(self):
return "User({!r}, {!r}, {!r})".format(
self.name, self.gender, self.age)
user1 = User('dany wasser', 'gender: male', 21) Then you could simply do
>>> print(user1) The method could also be named __repr__() in this case in order to be called if some code asks for repr(user1) .
Posts: 8,167
Threads: 160
Joined: Sep 2016
you will usei
saty.user1 to reference name user1 from saty.py after this import.
Now there are other problems with your class. For example you don't need this __call__ function. For this class it doesn't make sense it to be callable. If you want to create nice printable representation of the class, you will use __str__ . There is also another special method - __repr__ which you may want to implement it's bit different.
class User:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def __str__(self):
return 'User {}, gender: {}, age: {}'.format(self.name, self.gender, self.age)
def __repr__(self):
return 'User object: (id: {}, name: {}, gender: {}, age: {})'.format(id(self), self.name, self.gender, self.age)
user1 = User('dany wasser', 'gender: male', 21) Output: >>> import saty
>>> saty.user1
User object: (id: 139691134272064, name: dany wasser, gender: gender: male, age: 21)
>>> print(saty.user1)
User dany wasser, gender: gender: male, age: 21
>>>
Posts: 28
Threads: 13
Joined: Jan 2018
Aug-23-2018, 10:47 AM
(This post was last modified: Aug-23-2018, 10:52 AM by nzcan.)
(Aug-23-2018, 06:37 AM)Gribouillis Wrote: If you only want to call the instance, you simply do
>>> user1() However, being callable is an uncommon feature for a class representing a user. In this case one would more traditionally define a conversion to string with a __str__() method.
class User:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def __str__(self):
return "User({!r}, {!r}, {!r})".format(
self.name, self.gender, self.age)
user1 = User('dany wasser', 'gender: male', 21) Then you could simply do
>>> print(user1) The method could also be named __repr__() in this case in order to be called if some code asks for repr(user1) .
it works excellent!
thanks a lot!
(Aug-23-2018, 06:37 AM)buran Wrote: you will usei
saty.user1 to reference name user1 from saty.py after this import.
Now there are other problems with your class. For example you don't need this __call__ function. For this class it doesn't make sense it to be callable. If you want to create nice printable representation of the class, you will use __str__ . There is also another special method - __repr__ which you may want to implementit's bit different.
class User:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def __str__(self):
return 'User {}, gender: {}, age: {}'.format(self.name, self.gender, self.age)
def __repr__(self):
return 'User object: (id: {}, name: {}, gender: {}, age: {})'.format(id(self), self.name, self.gender, self.age)
user1 = User('dany wasser', 'gender: male', 21) Output: >>> import saty
>>> saty.user1
User object: (id: 139691134272064, name: dany wasser, gender: gender: male, age: 21)
>>> print(saty.user1)
User dany wasser, gender: gender: male, age: 21
>>>
very sophisticated version!
thanks a lot!
|