Class hakkında Yardım

İyi günler benimçokgen classı tanımlayıp içinde bir alan çevre ve turtle çizimini oluşturmak gerekiyor
bunun altında başka üçgen kara daire gibi claslar oluşturmam gerekiyor yardımcı olurmusunuz?

https://pastebin.ubuntu.com/p/7fjWThq92c/

Sınıf oluşturma hakkında örnek kod için bakınız.
Polygon, Rectangle and Triangle Class in Python

Çokgen çizimi için örnek kod için bakınız.
How to draw pentagon, hexagon and other polygons in Python Turtle?

"altında"dan kastınız miras alma sanırım, dairenin çokgen sınıfını miras alması doğru olmaz.

import turtle
import math

t = turtle.Turtle()

class DüzgünÇokgen():

    def __init__(self, gen):
        assert gen >= 3
        self.gen = gen
        self.dışaçı = 360 / gen
        self.içaçı = 180 - self.dışaçı
        
    def çiz(self, kenar):
        for i in range(self.gen):
            t.forward(kenar)
            t.right(self.dışaçı)

    def alan(self, kenar):
        cosA = math.cos(math.radians(self.dışaçı))
        sinA = math.sin(math.radians(self.dışaçı))
        b_kare = kenar**2 / (1 - cosA) / 2 # cosinüs formülü
        return self.gen * (sinA * b_kare /2) # sinüs alan formülü


class Daire:

    def alan(self, yarıçap):
        return math.pi * yarıçap**2

    def çiz(self, yarıçap):
        t.circle(yarıçap)

Bu kod oyle demiyor ama :​) DuzgunCokgen sinifini da kose uzakligiyla calisacak sekilde duzeltirsek bu iki sinifin arayuzunun ayni olacagini soyluyor.

Miras iliskileri kurarken siniflarin ne olduklarina (neyi temsil ettiklerine) gore degil, nasil arayuzlere, varsayimlara ve beklentilere sahip olduklarina bakmak lazim.

Yani DuzgunCokgen ve Dairenin Cokgenden gelmeleri yanlis olabilir ama AlaniAlinabilenCizimden gelmeleri yanlis olmayabilir.

Dairenin Elipsten veya Karenin Dortgen’den gelmesi de dogru veya yanlis olabilir—beklentilere bagli.

1 Beğeni

Zaten öyle oluyor, ama tüm metotlarının üstüne yazacağım bir base sınıf oluşturma ihtiyacını burada hissetmedim.

Bunu dairenin çokgen olmadığı gerçeğine dayanarak söylemiştim, aynı tür özelliklere sahip olmalarının dışında bir benzerlikleri yok. Bu da iksinin de geometrik şekil olmasından kaynaklanıyor. GeometrikŞekil sınıfı miras alınabilirdi.

Evet o zaman aynı interface’i kullanmak iyi olur, ama çokgen için en büyük köşegen uzunluğunu alanı bulmakda kullanmak pek kullanışlı gelmedi bana.