オブジェクト向け-クラスとオブジェクトの定義と使用(initの説明を含む)


1.クラスとオブジェクトの概念
対象:特徴と技能の集合体類:一連の対象に似た特徴と技能の集合体である動物類:特徴:鼻、目、耳、口技能:食べる、走る現実世界で、必ず既存の対象であり、それから人類は対象のいくつかの共通の特徴によって、それを分類する.プログラミングでは、クラスを定義してから生成オブジェクトをインスタンス化する必要があります.
2.クラスの定義
"     ,    ,    "
  1:  
      :
          ='my_school'
          =  
          = 
          =18
      :
          
          
          

  2:  
      :
          ='my_school'
          =  
          = 
          =38
      :
          
          
          

       
         :
          ='my_school'
         :
          
          
          
"   ,   ,        "
# Python       class     ,            ,       ,           :        
#   
class Student:
    school='my_school'
    def learn(self):
        print('is learning')

    def eat(self):
        print('is eating')

    def sleep(self):
        print('is sleeping')

#     
s1 = Student()
s2 = Student()
print(s1)
print(s2)

E:\PythonProject\python-test\venvP3\Scripts\python.exe E:/PythonProject/python-test/BasicGrammer/test2/ww/ee.py
<__main__.student object="" at="">
<__main__.student object="" at="">

Process finished with exit code 0
"
  :
1.       python  ,               ,           ,             ,    Student.__dict__  
2.       ,      ,    Student.     
3.     ,     __dict__               ,      
"

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: vita
class Student:
    school = 'my_school'
    print(school) #        ,         ,           

    def learn(self):
        print('is learning')

    def eat(self):
        print('is eating')

    def sleep(self):
        print('is sleeping')

print("Student.__dict__:",Student.__dict__) #      Student.__dict__               
print("Student.school:",Student.school) #     .       
print("Student.__dict__['school']",Student.__dict__["school"])#                  

E:\PythonProject\python-test\venvP3\Scripts\python.exe E:/PythonProject/python-test/BasicGrammer/test.py
my_school
Student.__dict__: {'__module__': '__main__', 'school': 'my_school', 'learn': , 'eat': , 'sleep': , '__dict__': , '__weakref__': , '__doc__': None}
Student.school: my_school
Student.__dict__['school'] my_school

Process finished with exit code 0

3.クラスの使用
3.1クラス属性の追加削除
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: vita
class Student:
    school = 'my_school' #    

    def learn(self): #    
        print('is learning')

    def eat(self): #    
        print('is eating')

    def sleep(self):
        print('is sleeping')
#        
print("        Student.__dict__:",Student.__dict__)
print("        Student.__dict__['school']:",Student.__dict__["school"])

#    
print("  Student.school",Student.school)
print("  Student.__dict__['school']:",Student.__dict__["school"])

#    
Student.country='China'
print("    Student.__dict__['country']:",Student.__dict__["country"])

#    
del Student.country
print("    Student.__dict__:",Student.__dict__)

#    
Student.school="new_shcool"
print("    Student.__dict__['school']:",Student.__dict__["school"])

E:\PythonProject\python-test\venvP3\Scripts\python.exe E:/PythonProject/python-test/BasicGrammer/test.py
        Student.__dict__: {'__module__': '__main__', 'school': 'my_school', 'learn': , 'eat': , 'sleep': , '__dict__': , '__weakref__': , '__doc__': None}
        Student.__dict__['school']: my_school
  Student.school my_school
  Student.__dict__['school']: my_school
    Student.__dict__['country']: China
    Student.__dict__: {'__module__': '__main__', 'school': 'my_school', 'learn': , 'eat': , 'sleep': , '__dict__': , '__weakref__': , '__doc__': None}
    Student.__dict__['school']: new_shcool

Process finished with exit code 0

3.2クラスのインスタンス化
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: vita
class Student:

    school = 'my_school' #    ,    s1.school   s1.__dict__  ,   , Student   

    def learn(self): #    
        print('is learning')

    def eat(self): #    
        print('is eating')

    def sleep(self):
        print('is sleeping')

s1 = Student()
s2= Student()

#                 ,          
#         
#  :    ,  school      Student  ,       ,            。            ,       
print("        s1.__dict__:",s1.__dict__)
print("        s2.__dict__:",s2.__dict__)

#    
print("  s1.school",s1.school)
print("  s2.school",s2.school)

#    
#           
s1.country='China'
s2.country='America'
print("    s1.__dict__['country']:",s1.__dict__["country"])
print("    s1.country:",s1.country)
print("    s2.country:",s2.country)
#    
del s1.country
print("    s1.__dict__:",s1.__dict__)
print("    s2.__dict__:",s2.__dict__)
#    
#  :            scholl  ,   s1       school  
s1.school="new_shcool"
print("    s1.school",s1.school)
print("    s2.school",s2.school)
print("    s1.__dict__:",s1.__dict__)
print("    s2.__dict__:",s2.__dict__)

#          school  ,    Student.school="new_school",     ,        
Student.school="new_school_class"
del s1.school #     s1     school  ,       ,  s1.school   s1.__dict__    ,        
print("  Student.school  s1.school",s1.school)
print("  Student.school  s2.school",s2.school)
print("  Student.school  s1.__dict__:",s1.__dict__)
print("  Student.school  s2.__dict__:",s2.__dict__)

E:\PythonProject\python-test\venvP3\Scripts\python.exe E:/PythonProject/python-test/BasicGrammer/test.py
        s1.__dict__: {}
        s2.__dict__: {}
  s1.school my_school
  s2.school my_school
    s1.__dict__['country']: China
    s1.country: China
    s2.country: America
    s1.__dict__: {}
    s2.__dict__: {'country': 'America'}
    s1.school new_shcool
    s2.school my_school
    s1.__dict__: {'school': 'new_shcool'}
    s2.__dict__: {'country': 'America'}
  Student.school  s1.school new_school_class
  Student.school  s2.school new_school_class
  Student.school  s1.__dict__: {}
  Student.school  s2.__dict__: {'country': 'America'}

Process finished with exit code 0

3.3 initメソッドとオブジェクトの使用
"              ,             ,       ,       "
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: vita
class Student:

    school = 'my_school'
    def __init__(self,name,sex,age):#        , s1.__dict__     
        self.name=name
        self.sex=sex
        self.age=age

    def learn(self): #    
        print('is learning')

    def eat(self): #    
        print('is eating')

    def sleep(self):
        print('is sleeping')

#  __init__   ,      
# 1.       s1
# 2.Student.__init__(s1,'vita',' ',27)

s1=Student
Student.__init__(s1,'lyly',' ',28)

s2=Student('vita',' ',27)
s3=Student('chaochao',' ',30)
# 
print("s1.__dict__",s1.__dict__)
print("s2.__dict__",s2.__dict__)
print("s3.__dict__",s3.__dict__)
print("  s2.name",s2.name)#   s2.__dict__["name"]
# 
s2.name="vita_new" #   s2.__dict__["name"]="vita_new"
print("    s2.__dict__",s2.__dict__)
print("    s2.name",s2.name)
#  
del s2.name #   s2.__dict__.pop("course")
print("    s2.__dict__",s2.__dict__)

#  
s2.class_name="python" #   s2.__dict__["class_name"]="python"
print("    s2.__dict__",s2.__dict__)

#   s3      
print("    s3.__dict__",s3.__dict__)

E:\PythonProject\python-test\venvP3\Scripts\python.exe E:/PythonProject/python-test/BasicGrammer/test.py
s1.__dict__ {'__module__': '__main__', 'school': 'my_school', '__init__': , 'learn': , 'eat': , 'sleep': , '__dict__': , '__weakref__': , '__doc__': None, 'name': 'lyly', 'sex': ' ', 'age': 28}
s2.__dict__ {'name': 'vita', 'sex': ' ', 'age': 27}
s3.__dict__ {'name': 'chaochao', 'sex': ' ', 'age': 30}
  s2.name vita
    s2.__dict__ {'name': 'vita_new', 'sex': ' ', 'age': 27}
    s2.name vita_new
    s2.__dict__ {'sex': ' ', 'age': 27}
    s2.__dict__ {'sex': ' ', 'age': 27, 'class_name': 'python'}
    s3.__dict__ {'name': 'chaochao', 'sex': ' ', 'age': 30}

Process finished with exit code 0

3.4説明
1.局の角度が異なり、定義されたクラスが異なる2.現実のクラスはプログラムのクラスに完全に等しいわけではありません.例えば、現実の会社クラスは、プログラムの中で部門クラス、業務クラスに分割する必要があります.プログラミングの必要性のために、プログラムには現実に存在しないクラスが現れることがあるが、これはプログラムの中で普遍的であり、現実とプログラムを別々に開く必要がある.