Code: Alles auswählen
class Address:
def __init__(self, dataset):
self.__name, self.__street, self.__house = dataset.split('|')
dataset = "maier|lerchenweg|15" #stammt aus datei
a = Address(dataset)
Vielen Dank für Eure Vorschläge
Code: Alles auswählen
class Address:
def __init__(self, dataset):
self.__name, self.__street, self.__house = dataset.split('|')
dataset = "maier|lerchenweg|15" #stammt aus datei
a = Address(dataset)
Code: Alles auswählen
self.house = int(self.house)
Code: Alles auswählen
In [10]: dataset = "maier|lerchenweg|15"
In [11]: name, street, house = dataset.split("|")
In [12]: house
Out[12]: '15'
In [13]: house = int(house)
In [14]: house
Out[14]: 15
Bei dem beispiel isses wirklich egal, aber die datensätze bestehen insgesamt aus mehreren int's und es soll möglich sein, die datensätze anhand dieser int's zu sortieren/gruppieren und in eine reihenfolge zu bringen. strings kann man zwar auch der größe nach ordnen aber das halte ich für eine unschöne lösungBlackVivi hat geschrieben:Wozu muss diese 15'n int sein?... Musst du damit rechnen?
jo das wäre noch ne möglichkeit, aber ich bin mir fast sicher, dass es in python noch eleganter gehtderdon hat geschrieben:Du kannst das zwar nicht in einem Rutsch machen, aber so:Code: Alles auswählen
self.house = int(self.house)
ich wollte halt deutlich machen, dass es sich dabei um member handelt. außerdem soll folgendes nicht möglich sein:Leonidas hat geschrieben:Du weißt schon dass die ``__`` nicht "private" bedeuten, oder?
Code: Alles auswählen
addr.__street = "Finkenweg"
Es sind so oder so Member, das machst du ja schon durch zu Zuweisung zu einem Attribut von ``self`` deutlich. Das ``__`` macht es nur schwerer lesbar.ede hat geschrieben:ich wollte halt deutlich machen, dass es sich dabei um member handelt.Leonidas hat geschrieben:Du weißt schon dass die ``__`` nicht "private" bedeuten, oder?
is ja auch nich so wichtig: es soll die member nur vor einem zugriff von außen schützen, da hilft der doppelte unterstrich aber leider auch nixLeonidas hat geschrieben:Es sind so oder so Member, das machst du ja schon durch zu Zuweisung zu einem Attribut von ``self`` deutlich. Das ``__`` macht es nur schwerer lesbar.ede hat geschrieben:ich wollte halt deutlich machen, dass es sich dabei um member handelt.Leonidas hat geschrieben:Du weißt schon dass die ``__`` nicht "private" bedeuten, oder?
Code: Alles auswählen
In [37]: a, b, c = (f(y) for f, y in zip([str]*2 + [int], 'maier|lerchenweg|15'.split('|')))
In [38]: a
Out[38]: 'maier'
In [39]: b
Out[39]: 'lerchenweg'
In [40]: c
Out[40]: 15
Darum würde ich mir aber erst Sorgen machen, wenn ich sortiere und vergleiche... Das geht beides auch gut mit Strings. Falls du Angst hast, das es nich richtig sortiert wird... speicherst du eben die Hausnummern mit führenden nullen... dann wird es auch richtig sortiert. Es ist einfach keine gute Idee, Integer für Sachen zu nehmen, die nicht für Integer gedacht sind.ede hat geschrieben:aber zurück zum problem, es müssen wirklich integerwerte sein! ich will, wie gesagt, die datensätze vergleichen und sortieren können.
Code: Alles auswählen
>>> dataset = "maier|lerchenweg|15"
>>> args = []
>>> for i in dataset.split("|"):
... try:
... args.append(int(i))
... except:
... args.append(i)
...
>>> args
['maier', 'lerchenweg', 15]
>>> type(args[2])
<type 'int'>
Code: Alles auswählen
>>> dataset = "maier|lerchenweg|15"
>>> args = []
>>> for i in dataset.split("|"):
... try:
... args.append(int(i))
... except ValueError:
... args.append(i)
...
>>> args
['maier', 'lerchenweg', 15]
>>> type(args[2])
<type 'int'>
Arg, jop. Zu schnell geschrieben... Danke.Birne94 hat geschrieben:Ich würde die Exception genauer definieren
In der Regel genügt es, wenn du ein Attribut durch EINEN vorangestellten Unterstrich kennzeichnest. Per Konvention bedeutet das soviel wie "Finger weg".ede hat geschrieben:weißt du wie man die direkte zuweisung an member unterbinden kann?
Mit read-only Properies, aber wozu brauchst du das?ede hat geschrieben:es soll die member nur vor einem zugriff von außen schützen, da hilft der doppelte unterstrich aber leider auch nix
weißt du wie man die direkte zuweisung an member unterbinden kann?
Geheimnisprinzip ^__^Leonidas hat geschrieben:Mit read-only Properies, aber wozu brauchst du das?ede hat geschrieben:es soll die member nur vor einem zugriff von außen schützen, da hilft der doppelte unterstrich aber leider auch nix
weißt du wie man die direkte zuweisung an member unterbinden kann?
Code: Alles auswählen
[f(d) for f, d in zip((str, int, float, bool), "abc,2,5.5,True".split(","))]
Code: Alles auswählen
>>> bool("False")
True
Code: Alles auswählen
lambda x: x == "True"