作者: 大师的学徒 | 来源:发表于2020-03-18 18:09 被阅读0次
    class Animal():
        def __init__(self, age):
            self.age = age
    
        def get_age(self):
            return self.age
    
        def set_name(self, name):
            self.name = name
    
        def get_name(self):
            try:
                return self.name
            except:
                print("Set name first!")
    
        def __str__(self):
            return self.name + ":" + str(self.age) 
    
        __repr__ = __str__
    
    >>> a = Animal(3)
    >>> a.get_name()
    Set name first!
    >>> a.set_name("Jimmy")
    >>> a.get_name()
    'Jimmy'
    >>> a
    Jimmy:3
    
    
    #之所以说Python 不够严谨,是因为可以完全绕过类来通过属性来赋值
    >>> a.age = 5
    >>> a.get_age()
    5
    #默认状态下age应该输入int类型,但是在这种状态可以赋值str型,这样会导致程序内部的严重错误
    >>> a.age = "Jimmy"
    >>> a.get_age()
    'Jimmy'
    
    #类的继承
    
    class Cat(Animal):
        def speak(self):
            print("~meow~")
            
        def __str__(self):
            try:
                return self.name + " is a " + str(self.age) + "-years old cat!"
            except:
                return "A meow has no name yet!"
        
        __repr__ = __str__
    
    >>> c = Cat(5)
    >>> c
    A meow has no name yet!
    >>> c.get_name()
    Set name first!
    >>> c.set_name("Tiny")
    >>> c
    Tiny is a 5-years old cat!
    
    
    
    import random as r
    
    class Animal():
        def __init__(self, age):
            self.age = age
    
        def get_age(self):
            return self.age
    
        def set_name(self, name):
            self.name = name
    
        def get_name(self):
            try:
                return self.name
            except:
                print("Set name first!")
    
        def __str__(self):
            return self.name + "age:" + str(self.age) 
    
        __repr__ = __str__
    
    class Cat(Animal):
        def speak(self):
            print("~meow~")
            
        def __str__(self):
            try:
                return self.name + " is a " + str(self.age) + "-years old cat!"
            except:
                return "A meow has no name yet!"
        
        __repr__ = __str__
    
    
    class Human(Animal):
        def __init__(self, name, age):
            self.name = name
            self.age = age
            self.friends = []
    
        def get_friends(self):
            return self.friends
    
        def add_friends(self, other):
            if other.name not in self.friends:
                self.friends.append(other.name)
        def speak(self):
            print("Hello world! %s" %self.friends[0])
    
        def age_diff(self, other):
            diff = abs(self.age - other.age)
            print("They have",diff,"years difference.")
    
        def __str__(self):
            return "Human " + self.name + "age:" + str(self.age) + " have friends " + str(self.friends)
    
        __repr__ = __str__
    
    
    class Student(Human):
        def __init__(self, name, age, major = None):
             self.name = name
             self.age = age
             self.major = major
    
        def change_major(self, major):
            self.major = major
            return self.major
    
        def speak(self):
            R = r.random()
            if R < 0.25:
                return "Zzzzz..."
            elif  0.25 <= R < 0.5:
                return "I hunger..."#这里要用return,如果用print()就不能在print(a.speak())中正常显示了
            elif 0.5 <= R < 0.75:
                return "Maybe I need to study..."
            else:
                return "Go jerk it out!!!"
    
        def __str__(self):
            return "Student : " + self.name + " age : " + str(self.age) + "==>Major : " + str(self.major)
    
        __repr__ = __str__
    
    
    >>> a = Student("Jimmy",666, "PreMED")
    >>> a
    Student : Jimmy age : 666==>Major : PreMED
    >>> print(a.get_name(), "say:", str(a.speak()))
    Jimmy say: Go jerk it out!!!
    
    
    class Rabbit(Animal):
        tag = 1
    
        def __init__(self, age, parent1=None, parent2=None):
            Animal.__init__(self, age)
            self.parent1 = parent1
            self.parent2 = parent2
            self.rid = Rabbit.tag
            Rabbit.tag += 1
    
        def get_rid(self):
            return str(self.rid).zfill(3)
    
        def get_parent1(self):
            return self.parent1
    
        def get_parent2(self):
            return self.parent2
    
        def __add__(self, other):
            return Rabbit(0, self, other)#定义父母和子女关系,同时定义年龄
    
        def __eq__(self, other):
            parents_same = self.parent1.rid == other.parent1.rid \
                           and self.parent2.rid == other.parent2.rid
            parents_opposite = self.parent1.rid == other.parent2.rid \
                               and self.parent2.rid == other.parent1.rid
            return parents_same or parents_opposite
    
        def __str__(self):
            return "rabbit:" + self.name +" " + self.get_rid()
    
        __repr__ = __str__
    
    r1 = Rabbit(1)
    r1.set_name("Tu_1")
    r2 = Rabbit(2)
    r2.set_name("Zhu_1")
    r3 = r1 + r2
    r3.set_name("Er_1")
    print(r1)
    print(r2)
    
    

    相关文章

      网友评论

          本文标题:

          本文链接:https://www.haomeiwen.com/subject/kouqyhtx.html