zoukankan      html  css  js  c++  java
  • 面向对像(1day)

    # list
    # int
    # tuple
    
    
    #在python3中,所有的类都是新式类
    #
    # class A:pass
    # print(A.__bases__)
    #python3中你不写都默认给你是继承object
    #
    #
    #
    # #在python2中,新式类
    # class B(object):pass
    B继承object
    # class C(B):pass
    C继承B
    #
    # print(B.__bases__)
    # print(C.__bases__)
    #
    #
    #
    # #在python2中,经典类
    # class D:pass
    # print(D.__bases__)
    
    
    # class Student:
    #     country = 'China'
    #
    #     def __init__(self, ID, NAME, SEX, PROVINCE):#__init__这函数下面不能有除了none以外的返回值
    #         self.id = ID
    #         self.name = NAME
    #         self.sex = SEX
    #         self.province = PROVINCE
    #
    #     def search_score(self):
    #         print('tell score')
    #
    #     def study(self): #self=s1
    #         print('study',self)
    #类的属性是:特征(变量)和技能(函数)
    
    #类的用法:实例化,属性引用
    # s1 = Student('371818181818181', 'cobila', 'female', 'shanxi')
        #Student.__init__(s1,'371818181818181','cobila','female','shanxi')就等于上面的一行,但是这个函数不能有return
        # s1.id='371818181818181'
        # s1.name='cobila'
        # s1.sex='female'
        # s1.province='shanxi'
    
    # print(Student.country)这是引用类的变量
    # print(Student.__init__)
    # print(Student.study) 这些都是函数加括号就能运行
    # print(Student.search_score) 都是函数
    
    # Student.__init__(s1,'371818181818181','cobila','female','shanxi')因为是函数,所以加括号就运行
    # Student.study(s1)
    
    # Student.x=1   给类增加一个属性
    # print(Student.x)
    # x=10000000
    # print(Student.x)还是1,涉及到名字,跟命名空间有关,类相当于把一堆名字,包起来了
    你要用,就必须类名.xx的方法来进行
    
    # del Student.x    删除类的那个属性
    # print(Student.x)
    #
    # print(Student.study)
    # del Student.study 删除类的属性
    # print(Student.study)接下来就会报错
    
    # Student.country='xxxxx' 改变类的属性
    # print(Student.country)
    
    
    # class Struct:pass
    # Struct.x=1
    # Struct.y=2
    # Struct.res=Struct.x+Struct.y
    # print(Struct.res)
    这嘛做的好处是,变量来自于类,跟外部的名字隔离,
    
    
    # class Student:
    #     country = 'China'
    #
    #     def __init__(self, ID, NAME, SEX, PROVINCE):
    #         self.id = ID
    #         self.name = NAME
    #         self.sex = SEX
    #         self.province = PROVINCE
    #
    #     def search_score(self):
    #         print('tell score')
    #
    #     def study(self): #self=s1
    #         print('study',self)
    #
    # s1 = Student('371818181818181', 'cobila', 'female', 'shanxi')
    
    #对象也称为实例
    #对象的属性:对象本身就只有特征(变量)
    
    #对的用法:属性引用
    # print(s1.id,s1.name,s1.sex,s1.province)
    # s1.weight=100
    #
    # weight=1111111111111111111111111111111111111111111111
    # print(s1.weight)
    # # del s1.weight
    # # print(s1.weight)
    #
    # s1.id=123   修改
    # print(s1.id)
    
    
    
    #类的名称空间与对象的名称空间
    # x=123123123123
    # class Student:
    #     country = 'China'
    #
    #     def __init__(self, ID, NAME, SEX, PROVINCE):
    #         self.id = ID
    #         self.name = NAME
    #         self.sex = SEX
    #         self.province = PROVINCE
    #
    #
    #     def search_score(self):
    #         print('tell score')
    #
    #     def study(self): #self=s1
    #         print('study',self)
    #     def walk(self):
    #         print('name:%s is walking' %self.name)
    #
    # s1 = Student('371818181818181', 'cobila', 'female', 'shanxi')
    # s2 = Student('371818181sadf818181', 'cobilamei', 'femaleasfd', 'shasdfanxi')
    #
    #
    # # print(Student.__dict__) #查看类的名称空间,是一个字典
    # # print(Student.country) 就是在类里面有没有一个country对应的value
    # # print(s1.__dict__)#查看对象的名称空间,是一个字字典
    # # print(s1.id)
    # # s1.country="123123123"
    # # print(id(s1.country))
    # # print(id(s2.country))
    # # print(id(Student.country))
    # #
    # print(s1.study,id(s1.study))
    # print(Student.study,id(Student.study))
    # #绑定方法的核心在于‘绑定’,唯一绑定一个确定的对象
    # s1.walk()
    # s2.walk()
    
    
    
    class Riven:
        camp='Noxus'  #所有玩家的英雄(锐雯)的阵营都是Noxus;
        def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54;
            self.nickname=nickname  #为自己的锐雯起个别名;
            self.aggressivity=aggressivity #英雄都有自己的攻击力;
            self.life_value=life_value #英雄都有自己的生命值;
        def attack(self,enemy):   #普通攻击技能,enemy是敌人;
            enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。
    
    class Garen:
        camp='Noxus'  #所有玩家的英雄(锐雯)的阵营都是Noxus;
        def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54;
            self.nickname=nickname  #为自己的锐雯起个别名;
            self.aggressivity=aggressivity #英雄都有自己的攻击力;
            self.life_value=life_value #英雄都有自己的生命值;
        def attack(self,enemy):   #普通攻击技能,enemy是敌人;
            enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。
    
    
    #对象之间的交互
    # r1=Riven('芮雯雯')
    # g1=Garen('草丛轮')
    # print(r1.life_value)
    # g1.attack(r1)
    # print(r1.life_value)
    
    
    # name=input('your nickname: ')
    # r1=Riven(name)
    面向对像程序考虑的时候
    #应用场景想清楚
    #找不到共同特征和技能不用强求
    
    
    
    #对象:学校----->归类
        #共有的特征:商标为etiantian
        #共有的技能:招生
        #独有的特征:地址不一样,老师们,课程
    
    class School:
        tag='etiantian'
        def __init__(self,addr):
            self.addr=addr
            self.teacher_list=[]
            self.course_list=[]
    
        def zhaosheng(self):
            pass
    
    
    #对象:老师---->归类
        #共同的技能:教课
        #独有的特征:名字,性别,level,课程
    
    class Teacher:
    
        def __init__(self,name,sex,level):
            self.name=name
            self.sex=sex
            self.level=level
            self.course_list=[]
    
        def teach(self):
            pass
    
    
    #对象:学生---->归类
        #共同的特征:
        #共同的技能:search_score,handin
        #独有的特征:学号,名字,性别,课程
    class Student:
        def __init__(self,ID,name,sex):
            self.id=ID
            self.name=name
            self.sex=sex
            self.course_list=[]
        def search_score(self):
            pass
    
        def handin(self):
            pass
    
    class Course:
        def __init__(self,name,price,period):
            self.name=name
            self.price=price
            self.period=period
    
    s1=Student('123123123123','cobila','female')
    # print(s1.id,s1.name,s1.sex)
    # print(s1.course_list)
    # s1.course_list.append('python')
    # s1.course_list.append('linux')
    # print(s1.course_list)
    
    python_obj=Course('python',15800,'7m')
    linux_obj=Course('linux',19800,'2m')
    
    
    s1.course_list.append(python_obj)
    s1.course_list.append(linux_obj)
    # print(s1.course_list)
    
    print('''student name is:%s
        course name is :%s
        course price is :%s
        ''' %(s1.name,s1.course_list[0].name,s1.course_list[0].price))
    www.cnblogs.com/linhaifeng/articles/6182264.html
  • 相关阅读:
    jmeter实现文件下载
    三大主流负载均衡
    如何实现从登录接口响应数据中提取JSESSIONID
    URL构成及各个协议默认端口
    git提交代码报:fatal: Unable to create 'E:/testGit/test/.git/index.lock': File exists.
    MySql数据库慢查询
    mongdb创建自增主键(primary key)的相关讨论
    自定义延时查询控件---valen
    Systemd Unit文件中PrivateTmp字段详解-Jason.Zhi
    mysql create table
  • 原文地址:https://www.cnblogs.com/wanchenxi/p/7507271.html
Copyright © 2011-2022 走看看