Pythonクラス継承とフォーマット出力

4556 ワード

#!/usr/bin/python # Filename: inherit.py class SchoolMember:     '''Represents any school member.'''     def __init__(self, name, age):         self.name = name         self.age = age         print('(Initialized SchoolMember: %s)' % self.name)     def tell(self):         '''Tell my details.'''         print('Name:"%s"Age:"%s"'% (self.name, self.age),) class Teacher(SchoolMember):     '''Represents a teacher.'''     def __init__(self, name, age, salary):         SchoolMember.__init__(self, name, age)         self.salary = salary         print('(Initialized Teacher: %s)'% self.name)     def tell(self):         SchoolMember.tell(self)         print('Salary: "%d"'% self.salary) class Student(SchoolMember):     '''Represents a student.'''     def __init__(self, name, age, marks):         SchoolMember.__init__(self, name, age)         self.marks = marks         print('(Initialized Student: %s)'% self.name)     def tell(self):         SchoolMember.tell(self)         print('Marks: "%d"'% self.marks) t = Teacher('Mrs. Shrividya',40,30000) s = Student('Swaroop',22,75) members = [t, s] for member in members:
    member.tell()# works for both Teachers and Students
継承を使用するには、基本クラスの名前をメタグループとしてクラスを定義するときのクラス名の後に付けます.そして、基本クラスの_init__メソッドはself変数呼び出しに特化しており、オブジェクトの基本クラス部分を初期化できます.この点は非常に重要です.Pythonは基本クラスのconstructorを自動的に呼び出すことはありません.自分で呼び出さなければなりません.
メソッド呼び出しの前にクラス名の接頭辞を付け,self変数および他のパラメータを渡すことも観測した.
SchoolMemberクラスのtellメソッドを使用する場合、TeacherとStudioのインスタンスはSchoolMemberのインスタンスとしてのみ使用されます.
また,この例ではSchoolMemberクラスのtellメソッドではなくサブタイプのtellメソッドを呼び出した.このように理解できるように、Pythonは常に対応するタイプの方法を最初に検索し、この例ではそうである.エクスポート・クラスで対応するメソッドが見つからない場合は、基本クラスごとに検索を開始します.基本クラスは、クラス定義時にメタグループに指定されます.
1つの用語の注釈--継承メタグループに1つ以上のクラスが列挙されている場合、それは多重継承と呼ばれます.
1.出力文字列
>>> strHello = 'Hello World' 
>>> print (strHello)
Hello World

2.出力整数のフォーマット
パラメータのフォーマットをサポートし、C言語のprintfと似ています.
>>> strHello = "the length of (%s) is %d" %('Hello World',len('Hello World'))
>>> print (strHello)
the length of (Hello World) is 11

3.フォーマット出力16進、10進、8進整数
#%x --- hex     
#%d --- dec    
#%o --- oct    
 
>>> nHex = 0xFF
>>> print("nHex = %x,nDec = %d,nOct = %o" %(nHex,nHex,nHex))
nHex = ff,nDec = 255,nOct = 377

4.出力浮動小数点数のフォーマット(float)
import math
>>> print('PI=%f'%math.pi)
PI=3.141593
>>> print ("PI = %10.3f" % math.pi)
PI =      3.142
>>> print ("PI = %-10.3f" % math.pi)
PI = 3.142     
>>> print ("PI = %06d" % int(math.pi))
PI = 000003

5.出力浮動小数点数のフォーマット(float)
>>> precise = 3
>>> print ("%.3s " % ("python"))
pyt
>>> precise = 4
>>> print ("%.*s" % (4,"python"))
pyth
>>> print ("%10.3s " % ("python"))
       pyt

6.出力リスト(List)
出力リスト
>>> lst = [1,2,3,4,'python']
>>> print (lst)
[1, 2, 3, 4, 'python']

辞書の出力
>>> d = {1:'A',2:'B',3:'C',4:'D'} >>> print(d) {1: 'A', 2: 'B', 3: 'C', 4: 'D'}
7.自動改行
printは自動的に行末にリターンを加え、リターンを必要としない場合はprint文の最後にカンマを追加するだけで、「その動作を変更できます.
>>> for i in range(0,6):
    print (i,)
    
0
1
2
3
4
5

または、次の関数を直接使用して出力します.
>>> import sys
>>> sys.stdout.write('Hello World')
Hello World