14 svar
131 visningar
destiny99 behöver inte mer hjälp
destiny99 8066
Postad: 26 okt 19:12

Ange h:s datatyp

Hej

 

Jag valde D) men rätt svar är C) , är det för att G är ett namn på klassen och när vi tilldelar G(23) så får h datatypen klass? 

Smutstvätt 25191 – Moderator
Postad: 26 okt 20:06 Redigerad: 26 okt 20:18

Ja, ungefär. Definitionen av klassen G säger ungefär: 

Det finns en klass som heter G: 

     Definitionen av ett objekt av denna klass, är att:

          Objektet av denna klass har ett värde, vilket är det värde som skickas med när ett objekt av denna klass skapas.

Det låter (och är i mina ögon) rätt förvirrande, men om vi byter ut "G" mot säg, "Hund", kan vi skriva funktionellt ekvivalent kod: 

class Hund: 
	def __init__(self, namn):
		self.namn = namn

Här säger vi i princip att:

class Hund: #Det finns en grupp av objekt av Hund-typ
	def __init__(self, namn): #Definitionen av Hund kräver ett namn för att kunna skapa ett Hundobjekt
		self.namn = namn #Hundobjektet har ett namn, och detta namn är det namn som gavs när Hund-objektet skapades

Om vi sedan kallar på denna funktion: 

h = Hund("Max")

Är det lättare att se att h har definierats som ett objekt av klassen Hund (och denna Hund heter Max).


Tillägg: 26 okt 2024 20:09

h är inte en class, eftersom en class är en "mall" för hur en viss typ av objekt skapas/fungerar. 

h är inte en float eller int, eftersom att alla instanser av G är objekt av klassen G. Även om det enda ett G-objekt gör just nu är att hålla ett värde, så är det inte samma sak som att ett G-objekt är ett värde. På samma sätt som att hunden vi definierade heter Max, men är fortfarande en hund. :)

destiny99 8066
Postad: 27 okt 11:17 Redigerad: 27 okt 11:17
Smutstvätt skrev:

Ja, ungefär. Definitionen av klassen G säger ungefär: 

Det finns en klass som heter G: 

     Definitionen av ett objekt av denna klass, är att:

          Objektet av denna klass har ett värde, vilket är det värde som skickas med när ett objekt av denna klass skapas.

Det låter (och är i mina ögon) rätt förvirrande, men om vi byter ut "G" mot säg, "Hund", kan vi skriva funktionellt ekvivalent kod: 

class Hund: 
	def __init__(self, namn):
		self.namn = namn

Här säger vi i princip att:

class Hund: #Det finns en grupp av objekt av Hund-typ
	def __init__(self, namn): #Definitionen av Hund kräver ett namn för att kunna skapa ett Hundobjekt
		self.namn = namn #Hundobjektet har ett namn, och detta namn är det namn som gavs när Hund-objektet skapades

Om vi sedan kallar på denna funktion: 

h = Hund("Max")

Är det lättare att se att h har definierats som ett objekt av klassen Hund (och denna Hund heter Max).


Tillägg: 26 okt 2024 20:09

h är inte en class, eftersom en class är en "mall" för hur en viss typ av objekt skapas/fungerar. 

h är inte en float eller int, eftersom att alla instanser av G är objekt av klassen G. Även om det enda ett G-objekt gör just nu är att hålla ett värde, så är det inte samma sak som att ett G-objekt är ett värde. På samma sätt som att hunden vi definierade heter Max, men är fortfarande en hund. :)

Men h är G för att G är objektet som vi definierat till klassen ? Jag är lite ny på det här med klasser. 

En klass är en mall för hur en viss typ av objekt skapas – mallen visar vilka typer av egenskaper som objekten i denna grupp har. Varje gång klassen skapar (genom att vi kallar på klassen att skapa), skapas ett objekt, en instans av den klassen. 

G(23) kallar på klassen G, vilket innebär att de skapas ett G-objekt, som innehåller värdet 23. På ungefär samma sätt som att vi kan skapa en profil på en hemsida, som håller i det användarnamn som användaren valt. 

När vi sedan sätter h = G(23), får h samma typ som G(23), vilket är G. :)

destiny99 8066
Postad: 27 okt 12:17 Redigerad: 27 okt 12:19
Smutstvätt skrev:

En klass är en mall för hur en viss typ av objekt skapas – mallen visar vilka typer av egenskaper som objekten i denna grupp har. Varje gång klassen skapar (genom att vi kallar på klassen att skapa), skapas ett objekt, en instans av den klassen. 

G(23) kallar på klassen G, vilket innebär att de skapas ett G-objekt, som innehåller värdet 23. På ungefär samma sätt som att vi kan skapa en profil på en hemsida, som håller i det användarnamn som användaren valt. 

När vi sedan sätter h = G(23), får h samma typ som G(23), vilket är G. :)

Om jag förstår dig rätt är själva G(23) ett objekt med värdet 23 och G i sig är namnet på klassen right?  Vad innebär en instans av klassen?

katal 71
Postad: 27 okt 12:23

Tänk att en klass definierar objekt. Någonstans i datorn har alltså även int och str som typer definierats på ett liknande sätt. 

 

Om du t.ex. ska skriva en kod som (på något sätt) håller på fysik så kan du definiera en klass som heter ’termodynamik’. då blir alla parametrar du skickar in för att skapa en ny instans av ’termodynamik’ ett objekt med typen ’termodynamik’ för att du har definierat detta som en typ.

 

Det är alltså ett sätt att skapa en struktur som kan hjälpa dig att hålla reda på saker framöver, precis som ’int’ och ’str’ förutom att en klass du skapar kan hålla mer information än endast objektens typ!

destiny99 8066
Postad: 27 okt 12:32 Redigerad: 27 okt 12:33
katal skrev:

Tänk att en klass definierar objekt. Någonstans i datorn har alltså även int och str som typer definierats på ett liknande sätt. 

 

Om du t.ex. ska skriva en kod som (på något sätt) håller på fysik så kan du definiera en klass som heter ’termodynamik’. då blir alla parametrar du skickar in för att skapa en ny instans av ’termodynamik’ ett objekt med typen ’termodynamik’ för att du har definierat detta som en typ.

 

Det är alltså ett sätt att skapa en struktur som kan hjälpa dig att hålla reda på saker framöver, precis som ’int’ och ’str’ förutom att en klass du skapar kan hålla mer information än endast objektens typ!

vill du ge ett mer enkel exempel där du berättar för mig vad instans innebär också? Jag förstår class termodynamik där termodynamik är ett objekt som klassen vill att vi använder objektet till något.  Nånstans kan jag blanda ihop det som sägs eftersom ämnet är nytt fortfarande!

thedifference 409
Postad: 27 okt 12:43 Redigerad: 27 okt 12:47

Jag tror du blir lite förvirrad för att G tar ett argument till sin constructor. Det kunde lika gärna ta 2, 0 eller 100 argument. Värdet du skickar är inte objektet, men används i regel för att på något sätt precisera just detta objekt. Om vi fortsätter med hundexemplet:

class Dog:
    def __init__(self, name, age, breed):
        self.name = name
        self.age = age
        self.breed = breed

    def __str__(self):
        return f"Jag heter {self.name} och är en {self.age} år gammal {self.breed}!"

fido = Dog("Fido", 7, "Tax")
karo = Dog("Karo", 2, "Terrier")

print(fido) # Jag heter Fido och är en 7 år gammal Tax!
print(karo) # Jag heter Karo och är en 2 år gammal Terrier!

Här är Dog en klass och fido och karo två objekt av denna klass. En klass är mer ett abstrakt koncept. En hund kan ju ha ett namn, en ålder och en ras, men du kan inte säga att en hund i allmänhet heter Fido eller att en hund i allmänhet är en tax. Dessa specifika objekt kan du däremot säga det om.

Utökade koden lite med strängrepresentation av en hund.

destiny99 8066
Postad: 27 okt 12:49 Redigerad: 27 okt 12:55
thedifference skrev:

Jag tror du blir lite förvirrad för att G tar ett argument till sin constructor. Det kunde lika gärna ta 2, 0 eller 100 argument. Värdet du skickar är inte objektet, men används i regel för att på något sätt precisera just detta objekt. Om vi fortsätter med hundexemplet:

class Dog:
    def __init__(self, name, age, breed):
        self.name = name
        self.age = age
        self.breed = breed

fido = Dog("Fido", 7, "Tax")
karo = Dog("Karo", 2, "Terrier")

Här är Dog en klass och fido och karo två objekt av denna klass. En klass är mer ett abstrakt koncept. En hund kan ju ha ett namn, en ålder och en ras, men du kan inte säga att en hund i allmänhet heter Fido eller att en hund i allmänhet är en tax. Dessa specifika objekt kan du däremot säga det om.

Dina sista två meningar förstod jag inte riktigt. En hund kan ha vilket ras, namn eller ålder som helst men de måste inte ha de där sakerna som du har tilldelat som exakt namn, ras osv.  Att fido och karo är två objekt av klassen Hund förstår jag. En annan sak jag inte förstår är vad constructor betyder och instanser? 

thedifference 409
Postad: 27 okt 12:55 Redigerad: 27 okt 12:56

Du kan säga vissa saker i allmänhet om en hund, till exempel att den har fyra ben och att den skäller. Vi behöver inte prata om en specifik hund. Det här är alltså på klassnivå, konceptet hund. Däremot om jag frågar dig vad hunden heter eller vad den har för ras så måste vi prata om en specifik hund, och då blir det objektnivå, en instans av en hund.

def __init__

är constructorn, som tar argument för hur objektet ska konstrueras. Objekt (fido, karo) är instanser av klasser (Dog).

destiny99 8066
Postad: 27 okt 13:15
thedifference skrev:

Du kan säga vissa saker i allmänhet om en hund, till exempel att den har fyra ben och att den skäller. Vi behöver inte prata om en specifik hund. Det här är alltså på klassnivå, konceptet hund. Däremot om jag frågar dig vad hunden heter eller vad den har för ras så måste vi prata om en specifik hund, och då blir det objektnivå, en instans av en hund.

def __init__

är constructorn, som tar argument för hur objektet ska konstrueras. Objekt (fido, karo) är instanser av klasser (Dog).

Så på klassnivå pratar vi om generell hund medan på objektnivå måste vi vara specifika om man frågas om ras, ålder ? Så instanser är typ objektets egenskaper som ålder, ras och sånt? 

thedifference 409
Postad: 27 okt 14:34

Instans och objekt är synonymer. Lite förvirrande, men man vänjer sig. Ett objekt är en instantiering av en klass.

Vi kan ju sitta här hela dagen och komma på fler sätt att definiera en hund (vikt, längd, maxhastighet, släktträd), men det ska ju finnas användning för attributen också. Tydligen för klassen G behövdes bara attributet a, ett nummer, användas för att definiera ett objekt. Den är inte precis ett paradexempel på självförklarande kod =)

Men vad koden gör är att instantiera ett objekt av klassen G, där attributet a får värdet 23. Likadant som objektet fido är en instantiering av klassen Dog, där attributet name får värdet Fido, age får 7 och breed får Tax.

destiny99 8066
Postad: 27 okt 14:43 Redigerad: 27 okt 14:49
thedifference skrev:

Instans och objekt är synonymer. Lite förvirrande, men man vänjer sig. Ett objekt är en instantiering av en klass.

Vi kan ju sitta här hela dagen och komma på fler sätt att definiera en hund (vikt, längd, maxhastighet, släktträd), men det ska ju finnas användning för attributen också. Tydligen för klassen G behövdes bara attributet a, ett nummer, användas för att definiera ett objekt. Den är inte precis ett paradexempel på självförklarande kod =)

Men vad koden gör är att instantiera ett objekt av klassen G, där attributet a får värdet 23. Likadant som objektet fido är en instantiering av klassen Dog, där attributet name får värdet Fido, age får 7 och breed får Tax.

Okej jag tror jag är med men inte hundra procent pga många ord i förklaringen. Jag ät med på att objekt och instans är samma sak . Attributen är alltså kännetecken som name får och kännetecken till name är tex Fido osv ? 

katal 71
Postad: 29 okt 17:44
destiny99 skrev:
thedifference skrev:

Instans och objekt är synonymer. Lite förvirrande, men man vänjer sig. Ett objekt är en instantiering av en klass.

Vi kan ju sitta här hela dagen och komma på fler sätt att definiera en hund (vikt, längd, maxhastighet, släktträd), men det ska ju finnas användning för attributen också. Tydligen för klassen G behövdes bara attributet a, ett nummer, användas för att definiera ett objekt. Den är inte precis ett paradexempel på självförklarande kod =)

Men vad koden gör är att instantiera ett objekt av klassen G, där attributet a får värdet 23. Likadant som objektet fido är en instantiering av klassen Dog, där attributet name får värdet Fido, age får 7 och breed får Tax.

Okej jag tror jag är med men inte hundra procent pga många ord i förklaringen. Jag ät med på att objekt och instans är samma sak . Attributen är alltså kännetecken som name får och kännetecken till name är tex Fido osv ? 

Instans och objekt är inte samma sak. Allt i python är objekt (klasser är objekt, funktioner, variabler, osv), men allt är inte en instans.

Instanser är endast de objekt som skapas med hjälp av klasser. Om du skickar in parametrar till en klass och skapar ett objekt som returneras i en ny variabel är din returnerade variabel då en instans av din klass.

Tänk på det engelska ordet ’instance’ som betyder ”an example or single occurrence of something” (copy paste from google). Därifrån kommer termen instans! 

Instans är alltså en specifik ’sak’, och det som beskriver din specifika sak är dess attribut. 

För vad attribut är så hittade jag den här länken som jag tyckte hade ett bra exempel:

https://www.geeksforgeeks.org/accessing-attributes-methods-python/

En attribut är alltså länkat till en instans och attributen ger information kopplat till vår instans. Tänk även här på engelskans ’attribute’!

destiny99 8066
Postad: 29 okt 18:20 Redigerad: 29 okt 18:20
katal skrev:
destiny99 skrev:
thedifference skrev:

Instans och objekt är synonymer. Lite förvirrande, men man vänjer sig. Ett objekt är en instantiering av en klass.

Vi kan ju sitta här hela dagen och komma på fler sätt att definiera en hund (vikt, längd, maxhastighet, släktträd), men det ska ju finnas användning för attributen också. Tydligen för klassen G behövdes bara attributet a, ett nummer, användas för att definiera ett objekt. Den är inte precis ett paradexempel på självförklarande kod =)

Men vad koden gör är att instantiera ett objekt av klassen G, där attributet a får värdet 23. Likadant som objektet fido är en instantiering av klassen Dog, där attributet name får värdet Fido, age får 7 och breed får Tax.

Okej jag tror jag är med men inte hundra procent pga många ord i förklaringen. Jag ät med på att objekt och instans är samma sak . Attributen är alltså kännetecken som name får och kännetecken till name är tex Fido osv ? 

Instans och objekt är inte samma sak. Allt i python är objekt (klasser är objekt, funktioner, variabler, osv), men allt är inte en instans.

Instanser är endast de objekt som skapas med hjälp av klasser. Om du skickar in parametrar till en klass och skapar ett objekt som returneras i en ny variabel är din returnerade variabel då en instans av din klass.

Tänk på det engelska ordet ’instance’ som betyder ”an example or single occurrence of something” (copy paste from google). Därifrån kommer termen instans! 

Instans är alltså en specifik ’sak’, och det som beskriver din specifika sak är dess attribut. 

För vad attribut är så hittade jag den här länken som jag tyckte hade ett bra exempel:

https://www.geeksforgeeks.org/accessing-attributes-methods-python/

En attribut är alltså länkat till en instans och attributen ger information kopplat till vår instans. Tänk även här på engelskans ’attribute’!

Tack! Ska försöka söka upp hela det här området på youtube så man ser detta i form av kod exempel osv tills det smälter in och läsa din förklaring flera gånger.

Svara
Close