python3 面向对象初步探索

面向对象主要有3大特性:封装 继承 多态

封装:

class Role(object):
    def __init__(self,name,role,weapon,life_value = 100,money = 15000):#构造函数 在实例化时做一些类的初始化的工作
        self.name = name#实例变量(静态属性),作用域就是实力本身
        self.role = role
        self.weapon = weapon
        self.life_value = life_value
        self.money = money
         
    def shot(self):#类的方法,功能(动态属性)
        print("shooting.......")
         
    def got_shot(self):
        print("ah.....,I got shot...")
     
    def buy_gun(self,gun_name):
        print("just bought %s" %gun_name)
 
r1 = Role('Hcl','police','AK47')
r2 = Role('ln','terrorist','B22')

继承示例:

class SchoolMember(object):
    members = 0
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    def tell(self):
        pass
    
    def enroll(self):
        """注册"""
        SchoolMember.members += 1
        print("member %s is enrooled,now there are %s members." %(self.name,SchoolMember.members))
    
    def __del__(self):
        """析构方法"""
        print("member %s is dead!" %self.name)

class Teacher(SchoolMember):
    def __init__(self,name,age,course,salary):
        #SchoolMember.__init(name,age)  #经典类继承
        super(Teacher,self).__init__(name,age)  #新式类继承
        self.course = course
        self.salary = salary
        self.enroll()
    
    def teaching(self):
        """"讲课方法"""
        print("Teacher %s is teaching %s for class %s" %(self.name,self.course,'s12'))
        
    def tell(self):
        """"自我介绍"""
        msg = "Hi myname is %s,works for %s as a %s teacher" %(self.name,'NJAU',self.course)  
        print(msg)  
        
class Student(SchoolMember):
    def __init__(self,name,age,grade,sid):
        super(Student,self).__init__(name,age)
        self.grade = grade
        self.sid = sid
        self.enroll()
    
    def tell(self):
        """自我介绍方法"""
        msg = "Hi My name is %s , I'm studing %s in %s!" %(self.name,self.grade,'NJAU')
        print(msg)
        
if __name__ == '__main__':
    t1 = Teacher('hcl',18,'python',20000)
    t2 = Teacher('ln',13,'Linux',3000)
    
    s1 = Student('hnnn',23,'python S12',1483)
    s2 = Student('ln',33,'Linux S12',1488)
    
    t1.teaching()
    t2.teaching()
    t1.tell()

输出:

member hcl is enrooled,now there are 1 members.
member ln is enrooled,now there are 2 members.
member hnnn is enrooled,now there are 3 members.
member ln is enrooled,now there are 4 members.
Teacher hcl is teaching python for class s12
Teacher ln is teaching Linux for class s12
Hi myname is hcl,works for NJAU as a python teacher
member hcl is dead!
member ln is dead!
member hnnn is dead!
member ln is dead!

多态示例:一种接口 多种实现 接口重用

class Animal(object):
    def __init__(self,name):
        self.name = name
    
    def talk(self):
        raise NotImplementedError("Subclass must implement abstract method")
    
class Cat(Animal):
    def talk(self):
        print("%s:喵喵" %self.name)

class Dog(Animal):
    def talk(self):
        print("%s:汪汪汪" %self.name)

def func(obj):#一种接口 多种形态
    obj.talk() 

c1 = Cat('小青')
d1 = Dog('小李')

func(c1)
func(d1)   

输出:

小青:喵喵
小李:汪汪汪

六、有兴趣接电子设计相关小型项目的请加下群,每个项目一般在1000元以内,非诚勿扰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值