简单的Python类问题[英] Simple Python class questions

问题描述

一个 Python 新手,但对类、对象的一些基本了解
等在例如 VB.Net 中工作.不过,我翻译有点吃力
把这些知识放到 Python 上下文中.

我正在尝试通过试用来自学 Python 的这一方面
项目,其中一部分需要从串行数据中拉取数据
定期连接.把所有的
comms 程序/函数在自己的类和模块中并制作
从 main 中实例化的对象调用这些函数
控制模块.但我正在努力让这个工作 - 不确定
是不是对类的使用有根本的误解
Python,语法错误纯粹和简单,或者很可能是组合
两者都有!

也许我可以提供一些大纲代码作为说明:

假设我在一个名为 comms.py 的模块中定义了这个类.班级
不会真的从任何其他类继承(大概除了
在最原始的基类意义上,大概是自动的
并隐含使用 class 关键字).让我们给班级打电话
串行链接.所以在 comms.py 我有:

类serial_link:
def __init__(self):
试试
导入序列号 #pyserial 库
除了 ImportException
#错误处理

def openPort(self):
试试
#尝试打开串口的代码
返回"成功"
除了 SerialException
返回"失败"

然后在我单独的主调用模块中,我可能有:

导入通讯
serlink=comms.seral_link #创建serial_link类的实例
打印 serlink.openPort
我希望最后一行会打印成功或失败.但我只是
似乎对随附的 openPort 函数进行了一些内部引用
在 <>.

那么为什么它不起作用呢?我可能在这里犯了多个错误
但据我所见,语法似乎是正确的.对于这个特殊的
例如,我不需要从
传递任何参数''seriallink.openPort'' 函数因此没有包含任何括号(或
即使是空的,它们是强制性的吗?)我可以继续解释
等等,但最简单的方法是看看是否有人能发现吼叫
直接说出来.

TIA 适合任何愿意提供帮助的人

推荐答案

Le Thursday 19 June 2008 13:54:03 John Dann, vous avez écrit*:
一个 Python 新手,但是对类、对象有一些基本的了解
等在例如 VB.Net 中工作.不过,我翻译有点吃力
把这些知识放到 Python 上下文中.

也许我可以提供一些大纲代码作为说明:

假设我在一个名为 comms.py 的模块中定义了这个类.班级
不会真的从任何其他类继承(大概除了
在最原始的基类意义上,大概是自动的
并隐含使用 class 关键字).
不,不是 :) 建议始终使用新样式的类,因此
明确地给出对象基础:

类serial_link(对象):
...

请参阅 http://docs.python.org/ref/node33.html
打印 serlink.openPort
您只是忘记了 (),因此您打印的是方法对象本身,而没有
调用它:打印 serlink.openPort()

--
Cédric Lucantis

6 月 19 日下午 6:54*,John Dann <n...@prodata.co.uk 写道:
一个 Python 新手,但是对类、对象有一些基本的了解
等在例如 VB.Net 中工作.不过,我翻译有点吃力
把这些知识放到 Python 上下文中.

我正在尝试通过试用来自学 Python 的这一方面
项目,其中一部分需要从串行数据中拉取数据
定期连接.把所有的
comms 程序/函数在自己的类和模块中并制作
从 main 中实例化的对象调用这些函数
控制模块.但我正在努力让这个工作 - 不确定
是不是对类的使用有根本的误解
Python,语法错误纯粹和简单,或者很可能是组合
两者都有!

也许我可以提供一些大纲代码作为说明:

假设我在一个名为 comms.py 的模块中定义了这个类.班级
不会真的从任何其他类继承(大概除了
在最原始的基类意义上,大概是自动的
并隐含使用 class 关键字).让我们给班级打电话
串行链接.所以在 comms.py 我有:

类serial_link:
* * * * def __init__(self):
* * * * * * * * 试试
* * * * * * * * * * * 导入序列号 #pyserial 库
* * * * * * * * ImportException除外
* * * * * * * * * * * * #错误处理

* * * * def openPort(self):
* * * * * * * * 试试
* * * * * * * * * * * #代码尝试打开串口
* * * * * * * * * * * * 返回"成功"
* * * * * * * * 除了 SerialException
* * * * * * * * * * * 返回"失败"

然后在我单独的主调用模块中,我可能有:

导入通讯
serlink=comms.seral_link * * #创建serial_link类的实例
打印 serlink.openPort

我希望最后一行会打印成功或失败.但我只是
似乎对随附的 openPort 函数进行了一些内部引用
在 <>.

那么为什么它不起作用呢?我可能在这里犯了多个错误
但据我所见,语法似乎是正确的.对于这个特殊的
例如,我不需要从
传递任何参数''seriallink.openPort'' 函数因此没有包含任何括号(或
即使是空的,它们是强制性的吗?)我可以继续解释
等等,但最简单的方法是看看是否有人能发现吼叫
直接出来.
是的,即使没有参数,它们也是强制性的,所以这是必需的
python可以区分调用函数和传递函数

TIA 适用于任何愿意提供帮助的人

约翰·丹恩写道:
假设我在一个名为 comms.py 的模块中定义了这个类.班级
不会真的从任何其他类继承(大概除了
在最原始的基类意义上,大概是自动的
并隐含使用 class 关键字).让我们给班级打电话
串行链接.所以在 comms.py 我有:

类serial_link:
def __init__(self):
试试
导入序列号 #pyserial 库
别了,这行不通.除了VB,Python其实是区分大小写的,所以
你必须写 ''try'' 而不是 ''Try'' 和 ''import'' 而不是 ''Import''.
此外,许多(全部?)导致缩进的语句通常是
以冒号结尾,就像 ''class ..:'' 和 ''def ..:'' 你也可以
必须使用 ''try:'' 而不仅仅是 ''try''.修复所有这些,然后再试一次,我猜
这已经很有帮助了.

还有一件事:你在滥用异常.通常,在这么短的
程序你在主入口函数中只有一对 try-except 和
所有其他代码只抛出异常.特别是 __init__
类的函数应该总是使用异常来表示错误.不过,
这不是一个严格的是/否问题,而是一个风格问题.
乌力

--
萨托激光有限公司
Gesch?¤ftsf??hrer: Thorsten F??cking, Amtsgericht Hamburg HR B62 932


本文地址:https://www.itbaoku.cn/post/1050831.html