オブジェクト向け-クラスとオブジェクトの定義と使用(initの説明を含む)
10492 ワード
1.クラスとオブジェクトの概念
対象:特徴と技能の集合体類:一連の対象に似た特徴と技能の集合体である動物類:特徴:鼻、目、耳、口技能:食べる、走る現実世界で、必ず既存の対象であり、それから人類は対象のいくつかの共通の特徴によって、それを分類する.プログラミングでは、クラスを定義してから生成オブジェクトをインスタンス化する必要があります.
2.クラスの定義
3.クラスの使用
3.1クラス属性の追加削除
3.2クラスのインスタンス化
3.3 initメソッドとオブジェクトの使用
3.4説明
1.局の角度が異なり、定義されたクラスが異なる2.現実のクラスはプログラムのクラスに完全に等しいわけではありません.例えば、現実の会社クラスは、プログラムの中で部門クラス、業務クラスに分割する必要があります.プログラミングの必要性のために、プログラムには現実に存在しないクラスが現れることがあるが、これはプログラムの中で普遍的であり、現実とプログラムを別々に開く必要がある.
対象:特徴と技能の集合体類:一連の対象に似た特徴と技能の集合体である動物類:特徴:鼻、目、耳、口技能:食べる、走る現実世界で、必ず既存の対象であり、それから人類は対象のいくつかの共通の特徴によって、それを分類する.プログラミングでは、クラスを定義してから生成オブジェクトをインスタンス化する必要があります.
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.現実のクラスはプログラムのクラスに完全に等しいわけではありません.例えば、現実の会社クラスは、プログラムの中で部門クラス、業務クラスに分割する必要があります.プログラミングの必要性のために、プログラムには現実に存在しないクラスが現れることがあるが、これはプログラムの中で普遍的であり、現実とプログラムを別々に開く必要がある.