Python 类

Python 类

一、类
1.1 什么叫类:
类,面向对象的一个很重要的载体。

1.2 类的定义:

class StudentName(object):
        pass

1、类里面一般都是由很多函数组成,函数的第一个参数默认都是self
2、如果需要全局变量,就在类的内部直接定义
3、类的内部在调用函数或者调用变量的时候,必须使用 self. 变量或者 self
4、self 代表的是类实例化以后的个体

1.3 类的实例化
实例化类的 首字母小写 作为实例,然后类实例化

studentName = StudentName()

举例,如:

class AaBb(object):
    name = "HC"
    def hello(self):
        print("hello {0}".format(self.name))
    def test(self):
        self.hello()
        print("This is test")

aaBb = AaBb()
aaBb.test()

这里写图片描述

解析:
1、定义一个类名为AaBb
2、定义一个hello() 和 一个test() 函数返回的值结果
3、将AaBb()进行实例化
4、实例化后调用test()或者hello()即返回定义类AaBb中相应的值

二、类的构造器
1.1 什么是类的构造器

就是类在初始化时候,首先必须要执行的函数

class A(object):
    def __init__(self,name):
        self.name = name
        print("init class A")
    def hello(self):
        print("hello {0}".format(self.name))

a = A("HC")
a.hello()

这里写图片描述

解析:
1、定义一个类名为A
2、使用_ _ init _ _函数的机构,定义一个name变量参数
3、将A实例化a,首先必须要执行_ _init_ _ 结果为 init class A
4、实例化后的a输出hello(),首先会将name变量的值代入后再输出对应hello()的结果 hello HC

三、继承

继承:以super为关键字
重写:子类定义父类同名函数之后,父类函数被覆盖
调用:先去找子类中的方法,如果子类中找不到对应的方法,就去父类中找。
多继承:如果父类中都有该方法,那么先继承谁,就用谁的方法,只执行首个_ _init_ _

举例,如:

class Animal(object):
    def Animal(self):
        print("你现在正在初始化一个Animal")
    def run(self):
        print("Animal can run.")

class Bird(Animal):
    def fly(self):
        print("Bird can fly.")

bird = Bird()
bird.run()
bird.fly()

这里写图片描述

解析:
1、首先定义一个类 Animal
2、定义一个Bird的类,且继承第一个类Animal
3、输出的结果可以看出,实例化Bird()后,bird可以调用Animal的run(),即继承了Animal
4、也可以调用自己的fly()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C中调用Python类的方法有多种方式。一种常见的方法是使用pybind11库。pybind11是一个C++库,可以在C++和Python之间进行无缝转换。它提供了一种简单的方式来将C++类绑定到Python,并且可以在C++中调用Python类的方法。通过使用pybind11,您可以在C++中创建一个Python模块,将C++类导出为Python类,并在C++中调用Python类的方法。 另一种方法是使用Python的C API。您可以使用Python的C API在C中调用Python类的方法。首先,您需要使用PyImport_ImportModule函数导入Python模块,然后使用PyObject_GetAttrString函数获取Python类的引用。接下来,您可以使用PyObject_CallMethod函数调用Python类的方法。 这是一个使用Python的C API在C中调用Python类的示例代码: ```c++ #include <Python.h> int main() { // 初始化Python接口 Py_Initialize(); // 导入Python模块 PyObject* pModule = PyImport_ImportModule("module_name"); if (pModule == NULL) { // 模块导入失败 return 1; } // 获取Python类的引用 PyObject* pClass = PyObject_GetAttrString(pModule, "class_name"); if (pClass == NULL || !PyCallable_Check(pClass)) { // 类引用获取失败或者不可调用 return 1; } // 创建类的实例 PyObject* pInstance = PyObject_CallObject(pClass, NULL); if (pInstance == NULL) { // 类实例创建失败 return 1; } // 调用类的方法 PyObject_CallMethod(pInstance, "method_name", NULL); // 释放资源 Py_DECREF(pInstance); Py_DECREF(pClass); Py_DECREF(pModule); // 结束Python接口初始化 Py_Finalize(); return 0; } ``` 请注意,上述代码中的"module_name"是要导入的Python模块的名称,"class_name"是要调用的Python类的名称,"method_name"是要调用的Python类的方法的名称。您需要根据实际情况进行相应的更改。 总结起来,您可以使用pybind11库或Python的C API在C中调用Python类的方法。这些方法可以让您在C和Python之间进行无缝的交互,并实现代码的扩展和功能的增强。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值