Python object-oriented new-style classes and classic classes

 

# Classic class writing
        # schoolMember.__init__(self, name, age, sex)

        # New-style class notation
        super(Teather, self).__init__(name, age, sex)
class schoolMember(object):
     ''' School member class ''' 
    member = 0

    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

        self.enroll() #Automatic   registration when instantiated

    def enroll(self):
        '''注册'''
        print("just enrolled a new school member [%s]" % self.name)
        schoolMember.member += 1


    def tell(self):
        print("%s info".center(40, "-") % self.name)

        for i in self.__dict__:  # 循环字典   t1.__dict__
            print("\t", i, self.__dict__[i])

        print("End".center(40, "-")+"\n")


    def  __del__ (self):   #destructor print ( " Expelled [%s] " % self.name 
        )
        schoolMember.member -= 1


class Teather(schoolMember):
     ''' teacher class '''

    def __init__(self, name, age, sex, salary, course):

        #Classic class writing 
        # schoolMember.__init__(self, name, age, sex)

        # New-style class writing 
        super(Teather, self). __init__ (name, age, sex)

        self.salary = salary
        self.course = course

    def teaching(self):
        print("tearcher [%s] is teaching [%s]" % (self.name, self.course))



class Student(schoolMember):
     ''' Student class '''

    def __init__(self, name, age, sex, course, tuition):

        super(Student, self).__init__(name, age, sex)

        self.course = course
        self.tuition = tuition
        self.amount = 0

    def pay_tuition(self, amount):
        print("student [%s] has just paied [%s]" % (self.name, amount))
        self.amount += amount


t1 = Teather("mike", 28, "F*M", 10000, "python")
s1 = Student("jianlin", 21, "N/A","pythons15", 100000)
s2 = Student("mayun", 12, "M", "pythons15", 210000)

print(schoolMember.member)


t1.tell()
s1.tell()
s2.tell()


del s1
print(schoolMember.member)
del s2
print(schoolMember.member)
del t1
print(schoolMember.member)




'''
just enrolled a new school member [mike]
just enrolled a new school member [jianlin]
just enrolled a new school member [mayun]
3
----------------mike info-----------------
     name mike
     age 28
     sex F*M
     salary 10000
     course python
------------------End-------------------

----------------jianlin info-----------------
     name jianlin
     age 21
     sex N/A
     course pythons15
     tuition 100000
     amount 0
------------------End-------------------

----------------mayun info-----------------
     name mayun
     age 12
     sex M
     course pythons15
     tuition 210000
     amount 0
------------------End-------------------

fired [jianlin]
2
fired [mayun]
1
fired [mike]
0
'''

 

class Person(object): # New-style class 
super

class Person: # Classic class
Person.__init__()

now mainly writes new-style classes

 

 

 

 

 

 

 

 

 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325891443&siteId=291194637