Bir nesnenin belirli bir sınıfın örneği mi yoksa alt sınıflarından biri mi olduğu nasıl belirlenir.

Katılım
10 Ocak 2023
Mesajlar
11
Puanları
1
Yaş
25
Python'da yeniyim... ve önemliyse, öncelikle Java geçmişinden geliyorum.
Python'da polimorfizmi anlamaya çalışıyorum. Belki de sorun şu ki, zaten anladığım ilkelerin Python'a yansıtılmasını istiyorum. Ancak, aşağıdaki test kodunu oluşturdum:
Kod:
class animal(object):
    "empty animal class"

class dog(animal):
    "empty dog class"

myDog = dog()
print myDog.__class__ is animal
print myDog.__class__ is dog
Alıştığım polimorfizme göre (örneğin, java'nın örneği), bu iddiaların her ikisi de doğru olmalıdır, çünkü bir köpek örneği hem bir hayvan hem de bir köpektir. Ancak benim çıktım:
Kod:
False
True
Python'daki is operatörünün iki girişin bellekteki aynı nesneye karşılık geldiğini doğruladığını belirten scaler tarafından yazılan bir makale gördüm; C#'daki is operatörüyle aynı değil ama bana herhangi bir şekilde yardımcı olacağına inanmıyorum. Neyi gözden kaçırıyorum?
 
Akttaki kod size fikir verebilir

class Animal:
def speak(self):
raise NotImplementedError("Alt sınıflar bu metodu karşılamalıdır")

class Dog(Animal):
def speak(self):
return "Hav! Hav!"

class Cat(Animal):
def speak(self):
return "Miyav"

# Evcil Hayvanlar
animals = [Dog(), Cat()]

# Evcil Hayvanların çıkardığı sesler
for animal in animals:
print(animal.speak())

Çıkış:
Hav! Hav!
Miyav
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…