Thanks Jeffrey. So, should I close this post and ask a new question as you suggested?
On Saturday, 27 August 2016 11:27:32 UTC+2, Jeffrey Sarnoff wrote: > > In an object-oriented language, an instance of a class is an element of > computation (1 is an instance of the class Integer, and Integer is a > subclass of Number). > In a type-guided language, a realization of a type is an element of > computation (1 is a realization of type Int, and type Int is a subtype of > Integer and of Number). > The work done through the use of classes is taken up through types and > methods defined on/over types. There is no "better" general alternative > for translating class-based design than applying Julia's types and methods. > A better question: "How should I define PhysicalNodes in Julia differently > than I did in Python?" > > > > > > > On Saturday, August 27, 2016 at 2:52:24 AM UTC-4, [email protected] wrote: >> >> What are the alternatives to using classes in Julia apart from types? Can >> you please explain how I can define the PhysicalNodes class in Julia the >> same way like I did in python? >> >> On Friday, 26 August 2016 23:16:39 UTC+2, Cedric St-Jean wrote: >>> >>> It's not possible in Julia at the moment. There's an issue for it. >>> <https://github.com/JuliaLang/julia/issues/269> I think the main >>> options are: >>> >>> - Don't declare the types. This may make it slower, but depending on the >>> use case it might not be a big deal >>> - Use parametric types, i.e. >>> >>> type Node{T} >>> edges::Vector{T} >>> end >>> >>> type Edge{T} >>> node::T >>> end >>> >>> >>> >>> On Friday, August 26, 2016 at 1:38:38 PM UTC-4, [email protected] wrote: >>>> >>>> Hello all, >>>> >>>> I'm making a transition from Python to Julia and in the process, I've >>>> encountered a small difficulty. While in python, i declared three classes >>>> as follows: >>>> >>>> class PHY_NODES: >>>> def __init__(self, nodeID, nodenum, x, y, demands): >>>> self.id = nodeID >>>> self.nodenum = nodenum >>>> self.x = x >>>> self.y = y >>>> self.inEdges = [] >>>> self.outEdges = [] >>>> self.demands = demands >>>> >>>> def __str__(self): >>>> return "Physical Node ID: nodenum: %4d x: %.3f y: %.3f" %( >>>> self.id, self.nodenum, self.x, self.y ) >>>> >>>> def addInEdge(self, edge): >>>> self.inEdges.append( edge ) >>>> >>>> def addOutEdge(self, edge): >>>> self.outEdges.append( edge ) >>>> >>>> >>>> class PHY_LINKS: >>>> def __init__(self, linkID, source, destination, SourceID, >>>> DestinationID,): >>>> self.linkID = linkID >>>> self.source = source >>>> self.destination = destination >>>> self.SourceID = SourceID >>>> self.DestinationID = DestinationID >>>> >>>> >>>> def __str__(self): >>>> return "Physical Link ID: %4d source: %s destination: %s >>>> SourceID: %4d DestinationID: %4d " %(self.linkID, self.source, >>>> self.destination, self.SourceID, self.DestinationID, ) >>>> >>>> >>>> class DEMAND: >>>> def __init__(self, PoP_bdw_up, PoP_stor, PoP_pro, MME_bdw_up, >>>> MME_stor, MME_pro,demandID): >>>> self.PoP_bdw_up = PoP_bdw_up >>>> self.PoP_stor = PoP_stor >>>> self.PoP_pro = PoP_pro >>>> self.MME_bdw_up = MME_bdw_up >>>> self.MME_stor = MME_stor >>>> self.MME_pro = MME_pro >>>> self.demandID = demandID >>>> >>>> >>>> def __str__(self): >>>> return " PoPbdwup: %.3f PoPstor: %.3f PoPpro: %.3f MMEbdwup: >>>> %.3f MMEstor: %.3f MMEpro: %.3f, self.demandID ) >>>> >>>> However, I have some trouble when replicating the same in Julia >>>> especially due to the nested classes in PHY_NODES (self.inEdges as well as >>>> self,demands) >>>> >>>> The Julia version of the Phy_Node class is as below: >>>> >>>> type PhysicalNodes >>>> ID:Int >>>> name:String >>>> x: Float >>>> y:Float >>>> inEdges: ? >>>> outEdges: ? >>>> demands: ? >>>> end >>>> >>>> I don't how to declare the inEdges, outEdges and demands here. Could >>>> you please help me with this? >>>> >>>>
