Python-Memo

Python-Bildbeitrag

https://nktmemo.wordpress.com/2014/01/05/画像のurlを受け取りbase64テキストに変換する(python)/

Verwenden Sie class, um einen neuen Datentyp zu erstellen

[Beispiel: Würfeltyp mit nur Namen, der keine Funktion hat]

>>> class Dice:
...     pass
...

[Instanz aufrufen]

>>> sai = Dice()

Wenn kein Fehler auftritt, wurde ein neuer Würfeltyp vorbereitet und der Variablen sai zugewiesen.

Was ist ein "neuer Datentyp"?

Die Art wird durch das Attribut (Attribut) bestimmt, Erstellen Sie Funktionen mit Methoden.

Beispiel) Würfel ・ Eigenschaften: 6 Gesichter und Zahlen eingraviert ・ Sie können eine Zahl würfeln und entscheiden

[Datentyp] -Eine Sammlung einfacherer Datenattribute (Attribute) und Funktionen (Methoden). "Attribut" und "Methode" Wie ist das Der Mechanismus (Entwurfszeichnung), der die Klasse bestimmt, ist das Konzept der Klasse.

Klasse ist eine Konstruktionszeichnung vom Datentyp
Erstellen Sie einen neuen Datentyp mit dem Schlüsselwort class

Fügen Sie dem Würfeltyp ein Datenattribut hinzu, das die Anzahl der Würfelflächen ausdrückt.

>>> class Dice:
...     face_num = 6
...
>>> 

Rufen Sie eine Instanz auf

>>> sai = Dice()
>>> sai.face_num

6

Dem Würfeltyp wurde ein neues Datenattribut, face_num, hinzugefügt. Sie können sehen, dass 6 gespeichert ist.

Denken Sie über den Unterschied zwischen Methoden und Funktionen nach

[Eine Funktion, die zufällig eine Zahl von 1 bis 6 zurückgibt]

>>> import random
>>>
>>> def shoot():
...     return random.randint(1,6)
...

Wenn Sie diese Funktion so wie sie ist in die Klasse einfügen, funktioniert sie nicht als Methode.

Was sollen wir dann tun?

Regeln, die Methoden definieren

--Methode erfordert "self" als erstes Argument

・ "Selbst", das ein Argument schreiben muss

sample.py


Als Modul zusammenstellen

>>> import random
>>>
>>> class Dice:
...     face_num = 6
...     def shoot(self):
...             return random.randint(1,6)
... 

>>> sai = Dice()
>>> sai.shoot()
5

face_num = 6 wird nicht verwendet Zum Beispiel

※Error

err.py


>>> import random
>>>
>>> class Dice:
...     face_num = 6
...     def shoot(self):
...             return random.randint(1,face_num)
... 

Dies führt zu einem Fehler. face_num = 6 Sie können die externen Variablen nicht innerhalb der Methode sehen. Es wird entschieden, dass die in der Funktion verwendeten Daten als Argument übergeben werden

face_num ist ein Datenattribut, das der Würfeltyp für sich hat Es ist mühsam, sich die Mühe zu machen, es als Argument an die Methode zu übergeben. Wenn die Anzahl der Datenattribute zunimmt, nimmt die Anzahl der Methodenargumente zu, was schwierig wird.

Bei der Vorbereitung einer Instanz wissen wir nicht, welchen Variablennamen der Benutzer zuweisen wird. Es wird beschlossen, die Instanz im ersten Argument der Methode "self" zu nennen, damit eine Instanz vom Typ Dice mit einem beliebigen Namen erstellt werden kann.

Entscheide dich, dich selbst zu bezeichnen

sample.py


>>> class Dice:
...     face_num = 6
...     def shoot(self):
...             return random.randint(1,self.face_num)
...
Als ich die Funktion erstellt habe, konnte ich die Variablen außerhalb der Funktion sehen, aber warum ist das Gesicht hier direkt daneben?_Kannst du num nicht sehen?

Der Bereich, aus dem auf die Variable verwiesen werden kann, wird durch den definierten Ort bestimmt.
Umfang.

Bereichstyp

Was Sie sehen können, wo Sie sind Nur "eingebauter Bereich" und "Modulbereich", zu denen Sie gehören.

import random

random.randint(1,10)

Wenn Sie ihm den Namen so zufällig geben, können Sie sich darauf beziehen. Es heißt "Namensraum".

sample.py



#! /usr/bin/python
#-*- coding:utf-8 -*-

import dice

sai = dice.Dice()
count = sai.shoot()
print(count)

sample.py



import random

class Dice:
        face_num = 6
        def shoot(self):
            return random.randint(1,self.face_num)

Die Identität der Initialisierungsmethode

Bei der Vorbereitung einer Instanz mit einem anderen Datentyp als dem integrierten Datentyp musste die Initialisierungsmethode aufgerufen werden. Da der erstellte Würfeltyp kein integrierter Datentyp ist, habe ich ihn wie folgt geschrieben.

sai = dice. Dice()

Ich mache es immer so. Dies ruft eine Initialisierungsmethode ohne Argumente auf. Wenn Sie mit der Klasse einen "neuen Datentyp" erstellen, stellt Python automatisch eine Initialisierungsmethode ohne Argumente bereit. Was ist, wenn ich das Verhalten dieser Initialisierungsmethode ändern möchte?

Der tatsächliche Name der Initialisierungsmethode init

[Komplett]

dice.py


import random

class Dice:
        face_num = 6
        def __init__(self):
            print("Hello")

        def shoot(self):
             return random.randint(1,self.face_num)

sample.py



#! /usr/bin/python
#-*- coding:utf-8 -*-

import dice

sai = dice.Dice()
count = sai.shoot()
print(count)

Hello
2

Ändern Sie den Würfeltyp

Beim Aufrufen der Initialisierungsmethode, damit verschiedene Würfeltypen mit dem Würfeltyp realisiert werden können 4, 6, 8, 12, 20 mit Argumenten Geben Sie eine der ganzen Zahlen von an In der Lage sein, die Form der Würfel zu bestimmen.

dice2.py



import random

class Dice:
    def __init__(self,val):
        self.face_num = val

    def shoot(self):
         return random.randint(1,self.face_num)

test10.py



import dice2

sai = dice2.Dice(4)
count = sai.shoot()
print(count)

Wenn kein Argument angegeben wird, tritt ein Fehler auf

Legen Sie den Standardwert des Arguments val in dice2.py fest

import random

class Dice:
    def __init__(self,val=6):
        self.face_num = val

    def shoot(self):
         return random.randint(1,self.face_num)

Entwicklung

Es gibt nur 5 Arten von regulären Tetraedern, aber der aktuelle Würfeltyp ist ein Argument der Initialisierungsmethode. Jeder Wert wird angegeben. Deshalb, Überprüfen Sie das Argument mit der Initialisierungsmethode und geben Sie einen Fehler aus, wenn dies nicht möglich ist.

Ob das Argument eine bestimmte Zahl ist oder nicht, wird anhand des Schlüsselworts in und einer Liste beurteilt.

>>> 4 in [4,6,8,12,20]
True

>>> 7 in [4,6,8,12,20]
False

>>> 7 not in [4,6,8,12,20]
True

dice3.py


#coding:UTF-8

import random

class Dice:
    def __init__(self,val=6):
        if val not in [4,6,8,12,20]:
            raise Exception("Es gibt kein solches Polyeder.")
            self.face_num = val

    def shoot(self):
        return random.randint(1,self.face_num)

test10.py



import dice3

sai = dice3.Dice(99)
count = sai.shoot()
print(count)

dice3.py



#! /usr/bin/python
#-*- coding:utf-8 -*-

import random

class Dice:
    def __init__(self,val=6):
        if val not in [4,6,8,12,20]:
            #raise Exception("Es gibt kein solches Polyeder")
            print("Es gibt kein solches Polyeder")
        self.face_num = val

    def shoot(self):
        return random.randint(1,self.face_num)
-*- coding:utf-8 -*-

import dice3

num = input("4,6,8,12,Welche der 20 wirst du spielen?:")
my_dice = dice3.Dice(num)
cpu_dice = dice3.Dice(num)

my_pip = my_dice.shoot()
cpu_pip = cpu_dice.shoot()

Konvertieren Sie Zahlen mit der Funktion str in Zeichenfolgen

print("CPU:"+ str(cpu_pip) + "Sie"+ str(my_pip))

if my_pip > cpu_pip:
    print("Herzliche Glückwünsche. Du gewinnst")
elif my_pip < cpu_pip:
    print("Es tut uns leid!Du verlierst")
else:
    print("Es ist eine Zeichnung")

Zusammenfassung

-Datentyp besteht aus Datenattributen und Methoden ・ Um einen neuen Datentyp zu erstellen, erstellen Sie eine Klasse, die als Konstruktionszeichnung dient. ・ Klasse organisiert Datenattribute (Attribute) und Methoden -Methoden werden der Klasse mit dem Schlüsselwort def hinzugefügt, genau wie Funktionen. -Die Methode muss immer "self" als erstes Argument haben -Der Inhalt der Initialisierungsmethode ist eine Methode namens init

Was ist Django?

Ein in Python implementiertes Webanwendungsframework. Ein Framework, das die MVC-Architektur (Model-View-Controll) erbt.

Django reduziert die Menge an Code und erleichtert das Erstellen komplexer datenbankzentrierter Websites.

https://django-docs-ja.readthedocs.org/

Installation

pip install django

Projekt

-Ein Projekt ist ein Python-Paket, das alle Einstellungen einer Django-Instanz enthält. ・ Erstellen Sie eine Website als ein Projekt.

Befehl django-admin

Durch Ausführen von "Projekt starten" wird das Projektverzeichnis (myprj) und Die erste Datei wird erstellt

django-admin startproject myprj

・ Myprj/
· Verwalten.py
・ Myprj
・__init__.py
· Die Einstellungen.py
・ Urls.py
・ Wsgi.py

Anwendung

Der Inhalt ist nur ein Python-Paket. Es ist egal, wohin PYTHON geht.

Beim Erstellen eines Abstimmungsverzeichnisses und von Anfangsdateien

cd myprj
python manage.py startapp polls

Modell-

Django bietet einen O / R-Mapper an. Sie können ein Datenbanklayout in Python-Code schreiben.

Jedes Modell ist eine Python-Klasse, die die Klasse django.db.models.Model erbt und einer Tabelle in der Datenbank entspricht.

URL-Dispatcher

・ URL-Muster in regulären Ausdrücken geschrieben -Schreiben Sie in das Modul "URLconf", das die Zuordnung von Python-Funktionen definiert. (Kann für jede Anwendung geteilt werden) (Indem Sie die URL mit einem Namen definieren, können Sie aus dem Code oder der Vorlage auf die URL mit diesem Namen verweisen.)

Aussicht

Funktion, die eine HTTP-Antwort zurückgibt · HttpResponse-Objekt für die angeforderte Seite · Ausnahmen wie Http404

Eine typische Ansichtsfunktion ist

  1. Daten aus Anforderungsparametern abrufen
  2. Laden Sie die Vorlage
  3. Rendern und senden Sie die Vorlage mit den erfassten Daten zurück

http://django-docs-ja.readthedocs.org/en/latest/contents.html

Recommended Posts

Python-Memo
Python-Memo
Python-Memo
Python-Memo
Python-Memo
Python-Memo
Python-Anfänger-Memo (9.2-10)
Python-Anfänger-Memo (9.1)
★ Memo ★ Python Iroha
[Python] EDA-Memo
Python 3-Operator-Memo
[Mein Memo] Python
Python3-Metaklassen-Memo
[Python] Grundkarten-Memo
Python-Anfänger-Memo (2)
[Python] Numpy Memo
Python-Klasse (Python-Lernnotiz ⑦)
Python OpenCV Installation (Memo)
Python-Modul (Python-Lernnotiz ④)
Visualisierungsnotiz von Python
Python
Python-Testpaket-Memo
[Python] Memo über Funktionen
Python-Memo für reguläre Ausdrücke
Memo zur Bisektionssuche (python2.7)
[Mein Memo] Python -v / Python -V
Python3-Memo vom Typ Liste / Wörterbuch
[Memo] Python 3-Listensortierung
Python-Tipps (mein Memo)
[Python] Memo Über Fehler
DynamoDB Script Memo (Python)
Python-Grundnotiz - Teil 2
Python-Rezeptbuch Memo
Grundlegende Python-Befehlsnotizen
Python OpenCV Tutorial Memo
Python grundlegende Grammatik Memo
TensorFlow API-Memo (Python)
Python nützliche Memo-Links
Python-Dekorator-Operationsnotiz
Python-Grundnotiz - Teil 1
Effektives Python-Memo Punkt 3
Ungefähre Aufzählung Python-Memo
Python-Memo (für mich): Array
Behandlung von Python-Ausnahmen (Python-Lernnotiz ⑥)
Memo zur Messung der Python-Ausführungszeit
Twitter-Grafiknotiz mit Python
[Line / Python] Beacon-Implementierungsnotiz
Python und Ruby Slice Memo
Python-Grammatik-Grundnotiz (1)
Persönliches Python-Code-Memo
Raspeye + Python + OpenGL-Memo
Python-Grundgrammatik (Verschiedenes) Memo (3)
Unveränderlicher Python-Typ int memo
Python-Memo mit Perl --join
Python-Datentyp-Zusammenfassungsnotiz
Python-Grundgrammatik (Verschiedenes) Memo (2)
[MEMO] [Entwicklung der Entwicklungsumgebung] Python
Memo zur Erstellungsprozedur von [Python] virtualenv
Python-Grundgrammatik (Verschiedenes) Memo (4)