zoukankan      html  css  js  c++  java
  • 类的定义和使用

    1、类的定义
    #先来看一个类的示例:
    1 #! /usr/bin/python3
    2 #-*-coding:UTF-8 -*-
    3 #Class_test
    4 
    5 class MyClass(object):
    6     i=123
    7     def f(self):
    8         return 'hello world'
    #由上面的代码可以得知,类定于的语法格式如下:
    1 class ClassName(object):
    2           <statement-1>
    3           . 
    4           .
    5           .
    6           <statement-N>
    #由代码片段和类定义我们看到,Python中定义类使用class关键字,class后面紧接着类名。如示例中的MyClass,类名通常是大写开头的单词;紧接着是(object),表示该类是从哪个类继承下来的。通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。类包含属性(相当于函数中的语句)和方法(类中的方法大体可以理解成前面学的函数)。
    #在类中定义方法的形式和函数差不多,但不称为函数,而称为方法。方法的调用需要绑定到特定对象上,而函数不需要。我们后面会逐步接触方法的调用方式。
     
    2、类的使用
    #前面已经了解了类的定义,现在以上面的那个例子为例,保存并执行:
     1 #! /usr/bin/python3
     2 #-*-coding:UTF-8 -*-
     3 #Class_test
     4 
     5 class MyClass(object):
     6     i=123
     7     def f(self):
     8         return 'hello world'
     9 
    10 use_class=MyClass()
    11 print('调用类的属性:',use_class.i)      #print('调用类的属性:',MyClass.i)
    12 print('调用类的方法:',use_class.f())
    #执行结果如下:
    1 ============== RESTART: C:/Users/DL He/Desktop/Class_test_1.py ==============
    2 调用类的属性: 123
    3 调用类的方法: hello world
    #由输入代码的调用方式可知,类的使用比函数调用多了几个操作,调用类时需要执行如下操作:
    1 use_class=MyClass()
    #这步叫作类的实例化,即创建一个类的实例。此处得到的use_class变量称为类的具体对象。再看看后面两行的调用:
    1 print('调用类的属性:',use_class.i)
    2 print('调用累的方法:',use_class.f())
    #这里第一行后的use_class.i用于调用类的属性,也就是前面所说的类变量。第二行后的use_class.f()用于调用类的方法。
    #在上面的示例中,在类中定义f()方法时带了一个self参数,该参数在方法中并没有被调用,是否可以不要呢?调用f()方法时没有传递参数,是否表示参数可以传递也可以部传递?
    #对于在类中定义方法的要求:在类中定义方法时,第一个参数必须是self。除了第一个参数外,类的方法和普通函数没什么区别,如可以用默认参数、可变参数、关键字参数和命名关键字参数等。
    #对于在类中调用方法的要求:要调用一个方法,在实例变量上直接调用即可。除了self不用传递,其他参数正常传入。
    #类对象支持两种操作,即属性引用和实例化。属性引用的标准语法如下:
    1 obj,name
    #语法中obj代表类对象,name代表属性。
  • 相关阅读:
    cas 重复登录问题解决了。但是两个页签都是已登录状态,一个页签退出,另外一个页签正常访问应用程序。会出现下面报错信息。待解决
    flask 结合cas 出现的问题
    实验场景:两个页面登录状态下,一个logout.然后重新登录,一个页面刷新
    flask 生成excel并下载
    为什么不能在shell脚本中执行source /etc/profile或者source ~/.bashrc问题?
    centos7实现ssh免秘钥分发
    Drbd+Heatbeat实现NFS共享文件存储高可用
    docker监控方案实践(cadvisor+influxdb+grafana)
    centos7.5部署ELk
    keepalived+haproxy实现高可用负载均衡
  • 原文地址:https://www.cnblogs.com/DLHe/p/7860441.html
Copyright © 2011-2022 走看看