** * Achtung Fügen Sie nacheinander hinzu, was Sie bemerkt haben **
Der Java-Shop beginnt mit der Verwendung von Python und listet die Dinge auf, die den Unterschied überrascht haben. Verlassen Sie auch die Bewältigungsmethode.
In Python gibt es keine Switch-Syntax. Es scheint, dass wenn es keinen Schalter gibt, es mit if gemacht werden sollte. Alternativ gibt es auch eine Methode, die ein Wörterbuch verwendet.
Warum gibt es in Python keine switch- oder case-Anweisung? (Offizielle Website)
Im Wörterbuch verwendete Methode
def function_1():
print('function_1')
def function_2():
print('function_2')
functions = {'a': function_1, 'b': function_2}
func = functions['b']
func()
↓ Ausführungsergebnis ↓
function_1
Python hat keine strengen Konstanten Durch die Benennung in Großbuchstaben wird es operativ wie eine Konstante behandelt. Es ist nur eine Variable, also können Sie sie natürlich ändern, wenn Sie möchten.
In Python gibt es keine Schnittstelle. Es gibt ein Konzept für abstrakte Klassen namens ABC (Abstract Base Classes), daher frage ich mich, ob es ein bestimmtes Problem gibt. Alles was Sie tun müssen, ist es zu einer abstrakten Methode zu machen.
Wie schreibe ich eine abstrakte Klasse(abctest.py)
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def sound(self):
pass
class Cow(Animal):
def sound(self):
print("moo")
class Penguin(Animal):
pass #Implementiert keine abstrakten Methoden
if __name__ == "__main__":
hanako = Cow()
hanako.sound()
taro = Penguin() #Beim Instanziieren wird eine Fehlermeldung angezeigt, da ich keine abstrakte Methode implementiert habe
Ausführungsergebnis
moo
Traceback (most recent call last):
File "abctest.py", line 19, in <module>
taro = Penguin()
TypeError: Can't instantiate abstract class Penguin with abstract methods sound
In Python gibt es kein Konzept der Überlastung. Verwenden Sie Standardargumenteinstellungen und Argumente variabler Länge, um beispielsweise Überladungen durchzuführen.
Das ist nicht gut
class Farm:
def add(self, animal):
print(animal)
def add(self, animal1, animal2):
print(animal1)
print(animal2)
if __name__ == "__main__":
farm = Farm()
farm.add('Dog')
farm.add('Jersey','Holstein')
↓ Ausführungsergebnis ↓
Traceback (most recent call last):
File "farmtest.py", line 13, in <module>
farm.add()
TypeError: add() missing 2 required positional arguments: 'animal1' and 'animal2'
class Farm:
def add(self, animal='Chicken'):
print(animal)
if __name__ == "__main__":
farm = Farm()
farm.add()
farm.add('Dog')
↓ Ausführungsergebnis ↓
Chicken
Dog
class Farm:
def add(self, *args):
if len(args) == 0:
print('blank')
for i in args:
print(i)
if __name__ == "__main__":
farm = Farm()
farm.add()
farm.add('Dog')
farm.add('Jersey','Holstein')
↓ Ausführungsergebnis ↓
blank
Dog
Jersey
Holstein
ApplicationContext
In Django gibt es kein Java-Servlet oder Spring-Framework, das einem Anwendungskontext entspricht, der breiter als der Sitzungsbereich ist. Benutzt du Django?
Es gibt keine beschriftete Unterbrechung in Python, die verwendet werden kann, wenn Sie aus einer Doppelschleife in Java herauskommen möchten. Ich benutze es nicht viel in Java, also ist es okay.
Python ist in der Funktion gültig. Java ist im Block gültig.
Dies ist umständlich für einen Java-Shop ...
Beachten Sie, dass wenn Sie es wie eine Java-Instanzvariable schreiben, dies eine Klassenvariable in Python bedeutet! Wenn ich zuerst einen Fehler machte, war ich überrascht, dass die Bewegung unerwartet war.
class Cow:
type = 'Holstein' #Klassenvariable
def __init__(self, name):
self.name = name #Instanzvariable
def walk(self):
print(self.name + 'Gehen')
hanako = Cow('Hanako')
hanako.walk()
↓ Ausführungsergebnis ↓
Hanako geht
Recommended Posts