装饰的功能@staticmethod和装饰的功能有什么区别@classmethod?
selfPython 中这个词的目的是什么?我理解它指的是从该类创建的特定对象,但我不明白为什么它明确需要作为参数添加到每个函数.为了说明,在Ruby中我可以这样做:
class myClass
def myFunc(name)
@name = name
end
end
Run Code Online (Sandbox Code Playgroud)
我很容易理解.但是在Python中我需要包括self:
class myClass:
def myFunc(self, name):
self.name = name
Run Code Online (Sandbox Code Playgroud)
谁能跟我说说这个?这不是我在(无可否认的有限)经历中遇到的事情.
考虑以下:
class objectTest():
def __init__(self,a):
self.value = a
def get_value(self):
return self.value
class execute():
def __init__(self):
a = objectTest(1)
b = objectTest(1)
print(a == b)
print(a.get_value() == b.get_value)
print(a.get_value() == b.get_value())
print(a.get_value == b.get_value)
if __name__ == '__main__':
execute = execute();
Run Code Online (Sandbox Code Playgroud)
此代码返回
>>>
False
False
True
False
Run Code Online (Sandbox Code Playgroud)
鉴于get_value是一个函数,我希望执行停止并返回错误,但事实并非如此.有人可以解释为什么python解释器允许这种语法而不是引发属性错误,这在我的情况下会节省我宝贵的时间.
让我先说一下,我在编程方面一样绿色,但一直在制作流程.然而,我的想法仍然需要完全理解为什么和正在发生的事情.
无论如何标题所暗示的问题,我将把我将保持的源代码粘贴到最低限度.
(我使用的是Python 3.4.1版)
class classname:
def createname(self, name):
self.name = name;
def displayname(self):
return self.name;
def saying(self):
print("Hello %s" % self.name);
first = classname;
second = classname;
first.createname("Bobby");
Run Code Online (Sandbox Code Playgroud)
我会在这里粘贴错误代码:
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
first.createname("Bobby")
TypeError: createname() missing 1 required positional argument: 'name'
Run Code Online (Sandbox Code Playgroud)
我知道我需要检查错误并仔细阅读它所说的内容以及在帖子之前进行搜索,完成后并且未能解决问题我来这里发布它...
从这里开始,如果您对我的想法感兴趣,您可以阅读:
错误告诉我,我需要在名称中再添加一个参数,所以我必须在那里出错,但我已经尝试过这样的事情:
first.createname("bobby", "timmy");
Run Code Online (Sandbox Code Playgroud)
名义上有更多的论点?如果我理解正确,论证就在 - >()< -
我也排除了def createname(self,name)这个事实,因为self是或应该是独自存在而不包括在内?所以我真的不明白发生了什么.
如果已经回答了这个问题,请提前感谢对不起,在这种情况下,我一定忽略了它.
解决了:
first = classname;
second = classname;
Run Code Online (Sandbox Code Playgroud)
应该:
first = classname();
second = classname();
Run Code Online (Sandbox Code Playgroud)
丢失的括号当然意味着我只是将第一个和第二个EQUAL作为其他东西并且不将它与"实际cl"联系起来
当我在主函数的这一行中调用 pytorch 中的 Network.parameters() 时出现问题:optimizer = optim.SGD(Network.parameters(), lr=0.001,momentum=0.9)
我得到错误代码:
TypeError: parameters() missing 1 required positional argument: 'self'
我的网络在这个类中定义
class Network(nn.Module):
def __init__(self):
super(Network, self).__init__()
self.conv1 = nn.Conv2d(1, 32, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(32, 64, 5)
self.pool2 = nn.MaxPool2d(2, 2)
self.conv3 = nn.Conv2d(64, 64, 5)
self.pool2 = nn.MaxPool2d(2, 2)
self.fc1 = nn.Linear(64 * 5 * 5, 512)
self.fc2 = nn.Linear(512, 640)
self.fc3 = nn.Linear(640, 3756)
def forward(self, x):
x = self.pool(F.relu(self.conv(x)))
x = self.pool(F.relu(self.conv2(x)))
x = self.pool(F.relu(self.conv3(x)))
x …Run Code Online (Sandbox Code Playgroud) 请指出我做错了什么,我是编码新手。
1.第一个.py文件:
import logging
class Log:
def __init__(self,msg):
self.msg = msg
def debug(self,msg):
FORMAT = "%(asctime)-15s%(message)s"
logging.basicConfig(filemode = "w", filename="file.log", format = FORMAT, level=logging.DEBUG)
logging.debug(self.msg)
Run Code Online (Sandbox Code Playgroud)
2.第二个.py文件
import first
first.Log.debug("I am in debug mode")
Run Code Online (Sandbox Code Playgroud)
当我运行 secondary.py 文件时,我收到错误 Logging.Log.debug("I am in debug mode")
TypeError: debug() missing 1 required positional argument: 'msg'**
Run Code Online (Sandbox Code Playgroud) 我是 Python 新手,我正在尝试学习如何使用类。有谁知道为什么这不起作用?任何有关关键字“self”的其他提示将不胜感激。
代码:
class Enemy:
life = 3
def attack(self):
print('ouch!')
self.life -= 1
def checkLife(self):
if self.life <= 0:
print('I am dead')
else:
print(str(self.life) + "life left")
enemy1 = Enemy
enemy1.attack()
enemy1.checkLife()
Run Code Online (Sandbox Code Playgroud)
错误:
C:\Users\Liam\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Liam/PycharmProjects/YouTube/first.py
Traceback (most recent call last):
File "C:/Users/Liam/PycharmProjects/YouTube/first.py", line 16, in <module>
enemy1.attack()
TypeError: attack() missing 1 required positional argument: 'self'
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud) 嗨我得到这个错误
TypeError: attack() missing 1 required positional argument: 'self'
Run Code Online (Sandbox Code Playgroud)
这是我的代码
class Enemmy :
life = 3
self = ""
def attack(self):
print ("ouch!!!!")
self.life -= 1
def checkLife(self):
if self.life <= 0 :
print ("dead")
else:
print (self.life)
enemy=Enemmy
enemy.attack()
Run Code Online (Sandbox Code Playgroud)
我检查并查看大多数地方说我忘了自我在def攻击或我需要做一个obj把我的类使用python 3.4与py魅力我实际上从教程得到这个代码,我不知道我的是什么错误
我写了一个类,其中有一个函数接受几个输入*args,但是运行结果证明它只接受来自第二个的参数,就好像self取第一个,这里是一个简化的代码:
class incorrect():
def itera(self, *args):
for i in args:
print(i)
a = incorrect
a.itera(12, 23, 34)
Run Code Online (Sandbox Code Playgroud)
输出12丢失了:
23
34
Run Code Online (Sandbox Code Playgroud)
问题是什么?我该如何解决这个问题?
我正在学习python。我创建了一个包含2种方法的类可视化工具。现在,我想在第二个方法中调用第一个方法。我读过我必须使用自我:
def method2(self):
self.method1()
Run Code Online (Sandbox Code Playgroud)
这可行。现在,我添加了其他参数:
def method2(self, param1, param2, param3):
self.method1()
Run Code Online (Sandbox Code Playgroud)
我从我的电话main.py:
xx.method2(param1, param2, param3)
Run Code Online (Sandbox Code Playgroud)
现在我得到一个错误:
missing 1 required positional argument: 'param3'
Run Code Online (Sandbox Code Playgroud)
我检查了一下,param3在那儿,参数的顺序是一样的。我认为这与冲突self。
我该如何解决?我的班级需要init方法吗?
编辑:在我的主要:
from project.visualizer import Visualizer
vsl = Visualizer
vsl.method2(param1, param2, param3)
Run Code Online (Sandbox Code Playgroud) 来自3.数据模型:
\n\n\n实例方法
\n实例方法对象组合了类、类实例和任何\n可调用对象(通常是用户定义的\xef\xac\x81ned 函数)。
\n
如果是定义的话,它的含义是什么?
\n如果不是定义,那么“实例方法”的定义是什么?
\n“实例方法”与类的方法是同一概念吗?
\n既然有人提出了类方法和静态方法、绑定方法和非绑定方法,那么我澄清一下:
\n我理解类的方法可以是普通方法、类方法或静态方法。我了解通过类或其实例访问的类的方法可以被绑定或函数。我从未听说过“实例方法”。即使看了引用,我也不知道它是什么,也不确定它是否与普通方法、类方法、静态方法、绑定方法或函数相关。
\n这是我第一次尝试创建和使用类。当我要求用户输入时发生错误。我收到以下错误:
n1 = Arithmetic.float_input("Enter your First number: ")
TypeError: float_input() missing 1 required positional argument: 'msg'
Run Code Online (Sandbox Code Playgroud)
这是我的代码。
# Define class
class Arithmetic:
def float_input(self, msg): # Use this function for exception handling during user input
while True:
try:
return float(input(msg))
except ValueError:
print("You must enter a number!")
else:
break
def add(self, n1, n2):
sum1 = n1 + n2
print(n1,"+" ,n2,"=", sum1)
def sub(self, n1, n2):
diff = n1 - n2
print(n1,"-",n2,"-", diff)
def mult(self, n1, n2):
product = n1 * …Run Code Online (Sandbox Code Playgroud)