我正在为Ansys Mechanical编写脚本,这些脚本是用IronPython2.7.0.40编写的.在我的脚本中,我需要将一个属性分配给ContactTimeStepControls.None.请注意,这里的None不是None对象.

我的问题是,VS代码中的Pylint扩展将这里使用None标记为语法错误(可能是因为它认为它是None对象),并拒绝计算其余代码.以下是它提供的错误消息:

语法错误:无效语法(file:///[PathToMyScript],第264行)编译[Ln 264,第80列]

分析失败:‘无效语法(,第264行)’PYLINT(E0001:语法错误)[Ln 264,第81列]

我已try 通过以下两种方式禁用该错误消息:

# pylint: disable=syntax-error
Cxn.TimeStepControls = ContactTimeStepControls.None

# pylint: disable=E0001
Cxn.TimeStepControls = ContactTimeStepControls.None

两者都无法 suppress 错误.

以下是演示的屏幕截图:

Example of Pylint Error

因此,我有三个问题:

  1. 我是不是在压制派林特方面做错了什么?
  2. 有没有一些方法可以组织代码以避免错误(请注意,我不能更改ContactTimeStepControls的成员)?
  3. 有没有其他方法来 suppress 这条线上的Pylint误差?

[1]dir(ContactTimeStepControls)的输出如下(见bolded项):

['AutomaticBisection', 'CompareTo', 'Equals', 'Format', 'GetHashCode', 'GetName', 'GetNames', 'GetType', 'GetTypeCode', 'GetUnderlyingType', 'GetValues', 'HasFlag', 'IsDefined', 'MemberwiseClone', 'None', 'Parse', 'PredictForImpact', 'ReferenceEquals', 'ToBoolean', 'ToByte', 'ToChar', 'ToDateTime', 'ToDecimal', 'ToDouble', 'ToInt16', 'ToInt32', 'ToInt64', 'ToObject', 'ToSByte', 'ToSingle', 'ToString', 'ToType', 'ToUInt16', 'ToUInt32', 'ToUInt64', 'TryParse', 'UseImpactConstraints', '__和__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__invert__', '__le__', '__lt__', '__ne__', '__new__', '__nonzero__', '__or__', '__r和__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__xor__', 'value__']

Edit:

我刚刚发现了另一个可能发生这种情况的地方,人们可能会更常见地经历这种情况.Microsoft的.NET API的System.Windows.Forms模块的DialogResult属性(link)具有None属性,这将产生相同的效果.

推荐答案

我找到了一个使用eval()的解决方法:

之前:

Code with Syntax Error

之后:

Code without Syntax Error

显然,eval()的使用使这一点不太理想.但风险很低,因为文本不是动态生成的,而且能够让Pylint判断整个代码的好处远远超过了需要使用eval()的坏处.

.net相关问答推荐

CLR如何在后台优化布尔比较操作?

如何在dotnet中使用OpenTelemetry Prometheus导出器导出多个版本的度量?

cmd 冻结中的 dotnet 命令.怎么了?

C# 时间跨度毫秒与 TotalMilliseconds

extern 在 C# 中是如何工作的?

如何从 .net 中的数组类型获取数组项类型

使用只读属性或方法?

C# 的 Actors 有什么好的实现吗?

C#中的引用类型

互锁且易变

mscorlib 代表什么?

监听依赖属性的变化

如何在 WebBrowser 控件中注入 Javascript?

嵌套的 Try/Catch 块是个坏主意吗?

使用 C# vs F# 或 F# vs C# 有什么好处?

C# ListView 列宽自动

在 C#/.NET 中合并两个图像

检测到包降级警告(dotnet core,vs 2017)

C#/.NET 中仅命名空间的类可见性?

如何使用 AutoMapper .ForMember?