在我看来,在注释类和实例变量的上下文中,我误解了。
基于这里的PEP文档中的示例,对象bar应该是一个具有默认值7的实例变量。
class Foo:
bar: int = 7
def __init__(self, bar):
self.bar = bar
但是用Python进行测试对我来说就不一样了。bar是一个类和实例变量。
Python 3.9.10 (tags/v3.9.10:f2f3f53, Jan 17 2022, 15:14:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help
以下是Zed Shaw的“艰难地学习Python”教程40中的代码片段:
class Song(object):
def __init__(self, lyrics):
self.lyrics = lyrics
def sing_me_a_song(self):
for line in self.lyrics:
print line
为什么Python允许在定义"self.lyrics“函数时使用"sing_me_a_song”?是因为在"init“下定义的任何变量也可以在同一类的其他地方使用吗
实际上,我正在清理一个cython模块,它有许多全局范围的函数和变量。我认为cdef类将是打包这些函数的一个很好的方法。但是当我试图调用这些类的一些方法时,我遇到了一个问题。我把它归结为这两个例子,说明了我的问题。代码的功能并不重要,我只是试图展示我面临的问题。
cdef class Foo:
def __init__(self):
pass
cdef int deref(self, int *bar):
return bar[0]
cdef int bar = 5
foo = Foo()
foo.deref(&bar)
如果运行这段
我刚接触Python,所以这可能是一个简单的作用域问题。Python文件(模块)中的以下代码让我有点困惑:
if __name__ == '__main__':
x = 1
print x
在我使用过的其他语言中,此代码会抛出异常,因为x变量是if语句的本地变量,不应该存在于该语句之外。但这段代码会执行,并打印1。有人能解释这种行为吗?在一个模块中创建的所有变量都是全局的/对整个模块可用吗?
我很抱歉所有人-我不是在这里责怪Python。这只是对我所相信的是否正确的反思。作为Python的拥趸两年来,我一直只编写小应用程序,无论我走到哪里,我都会唱起Python的赞歌。我最近有机会阅读了Django的代码,并开始怀疑Python是否真的遵循其“可读性很重要”的哲学。例如,
class A:
a = 10
b = "Madhu"
def somemethod(self, arg1):
self.c = 20.22
d = "some local variable"
# do so
我一直在寻找关于安装模块使用的过去一个小时。它说python27附带了pip,但是当我在命令行中输入python -m pip install --upgrade pip wheel setuptools时,我只得到错误NameError: Name 'python' is not defined.,甚至不能输入python --version。
我正在尝试安装的模块是kivy。在他们的网站上,它只是说下载python并在命令行中输入该字符串,它应该可以工作。如果我需要事先做点什么,我哪儿也找不到。
我在一个PyCharm项目中有以下Python代码:
class Category:
text: str
a = Category()
a.text = 1.5454654 # where is the warning?
当我试图设置一个类型错误的属性时,编辑器应该显示一个警告。下面看看下面的设置:
我想知道方法解析顺序属性mro似乎在Python3.x中不再可用了。使用Python3.5.2并创建一个随机类对象实例A,例如内置或自实现
A = dict()
然后打电话
A.__mro__
不起作用,养
AttributeError: 'A' object has no attribute '__mro__'
我尝试使用A.mro(),但这提供了相同类型的异常。现在如何接收方法解析命令?
我对蟒蛇很陌生。我听说,对于python,所有东西都是一个对象,即使是类或函数。
据我所知,类对象是在程序启动时创建的。因此,我想知道是否有一些函数用于初始化类变量或执行某些操作。
init函数不能这样做,因为它的参数是self,这是类的一个实例。我想访问这个类本身。
class Example():
def __init__(self):
# I know that this function is called when an instance of this class is created
pass
def __something__(cls):
在python中,下面的代码
x = 3
x='str'
允许x首先指向int类型对象,然后指向str类型对象,因为python是动态类型化。type(x)提供值类型(3或str) ,而不给类型的名称x。
实际上,x不存储值3,而是指向值为3的int类型对象。
在GO语言中,下面的语法
func main() {
y := 2
fmt.Println(reflect.TypeOf(y)) // gives 'int'
y = "str" // Compile time error, because
我有两个模块,a.py和b.py。我希望来自a.py的全局变量在b.py中可用,如下所示:
a.py:
#!/usr/bin/env python
var = "this is global"
import b
b.foo()
b.py:
#!/usr/bin/env python
var = "this is global"
def foo():
print var
目前,我在每个模块中重新声明了全局变量。肯定有更简单的方法。
在普通python类中,我可以定义类属性,如
class Example:
x = 3
def __init__(self):
pass
如果我做了Example.x或者Example().x,我就得到了3。
当我继承pydantic的BaseModel时,我不知道如何定义类属性,因为定义它们的通常方法是由BaseModel覆盖的。
例如:
class Example(BaseModel):
x = 3
print(Example.x)
--> type object 'Example' has no attribute 'x'
我希
在我的C#代码中,我有一个类,它存储了一些我希望以列表形式传递给我的python代码的数据。但是,当我试图在python代码中访问该类的属性时,得到的结果是MissingMemberException。下面是一些示例代码来说明我的意思:
C#:
class Event
{
public int EventId { get; set; }
public string EventName { get; set; }
}
//other processing here...
//this just fills the list with event objects
List<Event&
我意识到使用全局变量并不是一个好的编码实践。我需要在启动时加载一个机器学习模型,这样我就不需要在每个请求时处理它。我有Flask来处理请求。但是,我无法理解在Python中启动时初始化变量的好做法是什么。在Java中,我想我的方法是通过以下方式使用带有静态变量的类:
Class A{
private ClassB classB;
A() {
//Load some file into memory
classB = new ClassB();
classB.x = //set from file
}
public static ge
我正在尝试理解Python中一种奇怪的行为。
我有下面的python代码:
class IntContainer:
listOfInts = []
def __init__(self, initListOfInts):
for i in initListOfInts:
self.listOfInts.append(i)
def printInts(self):
print self.listOfInts
if __name__ == "__main__":
intsGroup1