zoukankan      html  css  js  c++  java
  • Python类

    创建一个类

    class Person:
        pass
    
    p = Person()
    print(p)
    

    类以class 声明

    self变量

    1. 这个定义与C++的this指针,都是指向对象示例本身,但使用起来是不一样的。
    2. 可以看到函数定义的时候,都要带一个self参数。这是因为python解释器会默认将对象本身作为参数传入函数。比如 ```python class test: def fun(self):
       pass

    p = test() p.fun()

    这里p.fun()实际上会被解释成test.fun(p)。所以若是fun没有带self参数,就会被认为传入一个参数到不带参数的函数,从而报错。
    3. 名字不一定是self,这只是一种约定俗成的方式
    
    ## 实例化对象
    与调用函数类似
    
    ## 使用对象方法
    ```python
    class Line:
        def WhoAmI(self):
            print("I am a line class")
    
    
    p = Line()
    p.WhoAmI()

    方法与C++类似,不同的是,这里的类的成员函数有一个self参数

    init方法

    类似于C++的构造函数,在类被实例化的时候调用。

    class Line:
        x = 0
        y = 0
    
        def __init__(self,x ,y):
            self.x = x
            self.y = y
    
        def showXY(self):
            print("x = %d , y = %d " %(self.x,self.y))
    
    
        def whoAmI(self):
            print("I am a line class")
    
    
    p = Line(1,2)
    p.whoAmI()
    p.showXY()

    私有成员

    以双下划线开始命名的成员变量和成员函数为私有的。

    class Line:
        x = 0
        y = 0
    
        __const  = 10
    
        def __init__(self,x ,y):
            self.x = x
            self.y = y
    
        def showXY(self):
            print("x = %d , y = %d " %(self.x,self.y))
    
    
        def whoAmI(self):
            print("I am a line class")
    
    
    p = Line(1,2)
    p.whoAmI()
    p.showXY()
    print(p.x)
    print(p.y)
    print(p.__const)
    

    这里执行到最后一句时会显示找不到该属性(AttributeError: 'Line' object has no attribute '__const')

    重载、继承

    TODO

  • 相关阅读:
    Idea初始化Vue项目
    为什么在vue的组件中,data要用function返回对象呢
    SpringBoot+RabbitMQ 快速入门
    Neo4j入门-CQL
    记一次坑爹的websocket Response code was not 101: 404的问题
    Neo4j入门-开始使用
    关于乱码问题的一些思考
    搭建apache2.4+php7+mysql+phpmyadmin
    oracle dba 关闭 002
    oracle 正则表达式 非字母 非数字
  • 原文地址:https://www.cnblogs.com/WeyneChen/p/6670628.html
Copyright © 2011-2022 走看看