zoukankan      html  css  js  c++  java
  • 第十一章、定制对象独有特征

    第十一章、定制对象独有特征

    一、引入

    class OldboyStudent:
        school = 'oldboy'
    
        def choose_course(self):
            print('is choosing course')
    
    
    stu1 = OldboyStudent()
    stu2 = OldboyStudent()
    stu3 = OldboyStudent()
    
    • 对于上述的学生类,如果类的属性改了,则其他对象的属性也会随之改变
    OldboyStudent.school = 'OLDBOY'
    
    print(stu1.school)
    
    OLDBOY
    print(stu2.school)
    #OLDBOY
    

    二、定制对象独有特征

    print(stu1.__dict__)
    
    {}
    print(stu2.__dict__)
    {}
    
    • 对象本质类似于类,也是一个名称空间,但是对象的名称空间存放对象独有的名字,而类中存放的是对象们共有的名字。因此我们可以直接为对象单独定制名字。
    stu1.country='China'
    print(stu1.country)
    #China
    

    三、类定义阶段定制属性

    class OldboyStudent:
        school = 'oldboy'
    
        def __init__(self, name, age, gender):
            """调用类的时候自动触发"""
            self.name = name
            self.age = age
            self.gender = gender
            print('*' * 50)
    
        def choose_course(self):
            print('is choosing course')
    
    
    try:
        stu1 = OldboyStudent()
    except Exception as e:
        print(e)
    
    __init__() missing 3 required positional arguments: 'name', 'age', and 'gender'
    

    接下来为对象赋值

    stu1 = OldboyStudent('nick', 18, 'male')
    
    print(stu1.__dict__)
    #{'name': 'nick', 'age': 18, 'gender': 'male'}
    
    通过上述现象可以发现,调用类时发生两件事:
    创造一个空对象
    自动触发类中__init__功能的执行,将stu1以及调用类括号内的参数一同传入
    
  • 相关阅读:
    UVa 10474
    UVa 1339
    UVa 1368
    UVa 1585
    UVa 1586
    ACM中Java高效输入输出封装
    Ajax中Get请求与Post请求的区别
    AJAX——核心XMLHttpRequest对象
    PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
    PHP类方法重写原则
  • 原文地址:https://www.cnblogs.com/demiao/p/11413137.html
Copyright © 2011-2022 走看看