4
Contributors
7
Replies
10
Views
4 Years
Discussion Span
Last Post by vegaseat
Featured Replies
  • mac_address live alone in global space. If you want it in your class you have pass it in as a instance variable or a agrument for for method resolve. >>> from foo import Mac >>> b = Mac(mac_address) >>> b.resolve() {'000000': 'xerox0', '000001': 'xerox1', '000002': 'xerox2'} Or class Mac: def … Read More

  • 1

    I t would be better to give the dictionary to the class this way ... class Mac: def __init__(self, hexmac, mac_address): self.hexmac = hexmac self.mac_address = mac_address def resolve(self): #print(self.mac_address) # test return self.hexmac, self.mac_address mac_address = { '000000':'xerox0', '000001':'xerox1', '000002':'xerox2', } m = Mac('123', mac_address) # returns a tuple … Read More

0

There is no best way, there are different ways

>>> class A(object):
...  def __init__(self):
...   self.mydict = dict() # <-- a dict is added to every instance
... 
>>> a = A()
>>> a.mydict["foo"] = "bar"
>>> 
>>> class B(object):
...  shareddict = dict()  # <-- this dict can be used by all instances
...  def __init__(self):
...   pass
... 
>>> b = B()
>>> b.shareddict["foo"] = "bar"
>>> b2 = B()
>>> b2.shareddict
{'foo': 'bar'}
>>> 
>>> class C(object):
...  pass
... 
>>> c = C()
>>> c.__dict__  # <-- instances usually have a predefined dict to store attributes
{}
0

Thanks,

Currently I have ....

class Mac:
 def __init__(self,hexmac):
  self.hexmac = hexmac
 def resolve(self):
  return self.hexmac
  return mac_address
  print mac_address

mac_address = { \
'000000':'xerox0', \
'000001':'xerox1', \
'000002':'xerox2', \
}

Can i reference this dict within the class ?

0

Can i reference this dict within the class ?

Sure, in this case mac_address is a global variable, which can be accessed from any function's body in the same file, including class methods.

0

Ah ok. But if I do ...

import sys
from file import Mac

b = Mac('123')
b.resolve()

It doesnt return the dict ?

1

mac_address live alone in global space.
If you want it in your class you have pass it in as a instance variable or a agrument for for method resolve.

>>> from foo import Mac
>>> b = Mac(mac_address)
>>> b.resolve()
{'000000': 'xerox0', '000001': 'xerox1', '000002': 'xerox2'}

Or

class Mac:
    def __init__(self,hexmac):
        self.hexmac = hexmac

    def resolve(self, mac_address):
        return self.hexmac, mac_address

mac_address = { \
'000000':'xerox0', \
'000001':'xerox1', \
'000002':'xerox2', \
}

Use class.

>>> b = Mac('123')
>>> b.resolve(mac_address)
('123', {'000000': 'xerox0', '000001': 'xerox1', '000002': 'xerox2'})

Edited by snippsat

0

Just an observation on your code ...

class Mac:
    def __init__(self,hexmac):
        self.hexmac = hexmac
    def resolve(self):
        return self.hexmac
        # after the above return the following will be ignored!!!
        return mac_address
        print(mac_address)

mac_address = {
'000000':'xerox0',
'000001':'xerox1',
'000002':'xerox2',
}

So rewrite your code as snippsat indicated already ...

class Mac:
    def __init__(self,hexmac):
        self.hexmac = hexmac
    def resolve(self):
        #print(mac_address)  # test
        return self.hexmac, mac_address


mac_address = {
'000000':'xerox0',
'000001':'xerox1',
'000002':'xerox2',
}

m = Mac('123')

# returns a tuple of 2 items
hx, ma = m.resolve()
print(hx)
print(ma)
1

I t would be better to give the dictionary to the class this way ...

class Mac:
    def __init__(self, hexmac, mac_address):
        self.hexmac = hexmac
        self.mac_address = mac_address
    def resolve(self):
        #print(self.mac_address)  # test
        return self.hexmac, self.mac_address


mac_address = {
'000000':'xerox0',
'000001':'xerox1',
'000002':'xerox2',
}

m = Mac('123', mac_address)

# returns a tuple of 2 items
hx, ma = m.resolve()
print(hx)
print(ma)
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.