Publiczne metody mutatorów w programowaniu obiektowym, odpowiedzialne za zmianę i zwracanie wartości składowych klasy prywatnej, zachowując tym samym zasadę hermetyzacji.
Oto pytanie projektowe dotyczące wyłącznie Pythona: class MyClass(object): ... def get_my_attr(self): ... def set_my_attr(self, value): ... i class MyClass(object): ... @property def my_attr(self): ... @my_attr.setter def my_attr(self, value): ... Python pozwala nam to zrobić w obu kierunkach. Jeśli zaprojektowałbyś program w języku Python, jakiego podejścia byś użył i dlaczego?
Robię to tak: def set_property(property,value): def get_property(property): lub object.property = value value = object.property Jestem nowy w Pythonie, więc wciąż badam składnię i chciałbym uzyskać porady na ten temat.
Dzięki tej prostej klasie otrzymuję ostrzeżenie kompilatora Próba modyfikacji / dostępu xw ramach własnego setera / gettera a kiedy używam tego w ten sposób: var p: point = Point() p.x = 12 Dostaję EXC_BAD_ACCESS. Jak mogę to zrobić bez wyraźnego tworzenia kopii zapasowych? class Point { var x: Int { …
Zamknięte . To pytanie jest oparte na opiniach . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć, podając fakty i cytaty, edytując ten post . Zamknięte 2 lata temu . Popraw to pytanie Dlaczego następujący kod C # nie jest dozwolony: public …
Stworzyłem interfejs z kilkoma właściwościami. Gdyby interfejs nie istniał, wszystkie właściwości obiektu klasy zostałyby ustawione na { get; private set; } Jednak nie jest to dozwolone w przypadku korzystania z interfejsu, więc czy można to osiągnąć, a jeśli tak, to w jaki sposób?
Mam następującą klasę: class ReportView: NSView { var categoriesPerPage = [[Int]]() var numPages: Int = { return categoriesPerPage.count } } Kompilacja kończy się niepowodzeniem i pojawia się komunikat: Nie można użyć elementu członkowskiego instancji „CategoriesPerPage” z typem „ReportView” Co to znaczy?
Zdaję sobie sprawę, jak tworzyć metody pobierające i ustawiające dla właściwości, których nazwy już znamy, robiąc coś takiego: // A trivial example: function MyObject(val){ this.count = 0; this.value = val; } MyObject.prototype = { get value(){ return this.count < 2 ? "Go away" : this._value; }, set value(val){ this._value = …
Widziałem gdzieś coś podobnego do następującego i zastanawiałem się, co to oznacza. Wiem, że są to metody pobierające i ustawiające, ale chcę wiedzieć, dlaczego typ ciągu jest zdefiniowany w ten sposób. Dziękuję za pomoc. public string Type { get; set; }
Próbuję nadpisać metodę pobierającą dla modelu ActiveRecord. Mam atrybut o nazwie namew modelu Categoryi chciałbym móc zrobić coś takiego: def name name_trans || name end Jeśli name_transatrybut nie jest nil, zwróć go, w przeciwnym razie zwróć nameatrybut. Jak bym to zrobił? Należy to wtedy nazwać normalnie w ten sposób: @category.name
Chodzę teraz na zajęcia z C # i próbuję znaleźć najlepszy sposób robienia rzeczy. Pochodzę z języka Java, więc znam tylko najlepsze praktyki dotyczące języka Java; Jestem nowicjuszem C #! W Javie, jeśli mam prywatną własność, robię to; private String name; public void setName(String name) { this.name = name; } …
Na przykład w Javie mogę samodzielnie pisać gettery (generowane przez IDE) lub używać adnotacji, takich jak @Getter w lombok - co było dość proste. Kotlin ma jednak domyślnie metody pobierające i ustawiające . Ale nie rozumiem, jak ich używać. Chcę to zrobić, powiedzmy - podobnie jak w Javie: private val …
Używanie get / set wydaje się być powszechną praktyką w Javie (z różnych powodów), ale prawie nie widzę kodu Pythona, który to używa. Dlaczego używasz lub unikasz metod get / set w Pythonie?
W poniższym przykładzie znalazłem nieoczekiwaną wartość tego słowa kluczowego: let x = { z : 10 , get func1() { return function(v) { console.log(this === v); } } } x.func1(x) Uruchom fragment koduUkryj wynikiRozwiń fragment kodu Wartością tego słowa kluczowego jest obiekt x, tak jakby został wykonany z tego obiektu, …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.