编辑:这是一个愚蠢的错误,看看答案,但我的init方法没有定义self变量.
我有几个python类是管道中的阶段.它们继承自基类.
class StageBase(object):
key = Segments.NONE
_preprocessors = []
def __init__():
self.closing = False
self.working = False
self._que = None
self._working_lock = None
self._que_lock = None
#whole bunch of other methods
Run Code Online (Sandbox Code Playgroud)
继承类覆盖key和_preprocessors.在添加显式__init__()方法之前,一切正常,现在我收到以下错误:
TypeError: __init__() takes no arguments (1 given)
错误行是我覆盖的行_preprocessors(在此示例中,此类变量表示应在此阶段之前执行的其他阶段).
抛出此错误的示例类:
class StaticPageStage(StageBase):
key = Segments.STATICPAGE
_preprocessors = [FacebookGraphStage(), ]
def __init__():
pass
def process(self, data):
data = self._preprocess(data)
return self.handle_results(tuple(x for x in data))
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何解决这个问题?
我正在尝试使用Tkinter创建一个简单的UI,但我遇到了一个问题.我的代码看起来像这样:
class UIController(tk.Tk):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
self.frames = {}
for F in (StartPage, BrowsePage, StudentPage):
frame = F(self, container)
self.frames[F] = frame
frame.title("StudyApp")
self.showFrame(StartPage)
self.centerWindow()
def showFrame(self, c):
frame = self.frames[c]
frame.tkraise()
def centerWindow(self):
w = 300
h = 350
sw = self.master.winfo_screenwidth()
sh = self.master.winfo_screenheight()
x = (sw - w)/2
y = (sh - h)/2
self.master.geometry('%dx%d+%d+%d' % (w, h, x, y))
class StartPage(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.pack()
self.L1 = …Run Code Online (Sandbox Code Playgroud) Python 新手,刚刚写了一个简单的例子,遇到了一个奇怪的错误。
显示.py
import abc
from graphics import *
class Display:
pass
class Visual(metaclass=abc.ABCMeta):
"""Represents a thing which can be drawn on a display"""
@abc.abstractmethod
def draw(disp: Display) -> None:
"""Draws the visual to the display"""
raise NotImplementedError()
class Display(metaclass=abc.ABCMeta):
def __init__(self) -> None:
__visuals = []
def add_visual( vis: Visual ):
__visuals.append(vis)
def draw() -> None:
for visual in __visuals:
visual.draw(self)
Run Code Online (Sandbox Code Playgroud)
图形显示.py
from graphics import *
from gfx.display import Display
class GraphicsDisplay(Display):
def __init__(self, window : GraphWin) -> None: …Run Code Online (Sandbox Code Playgroud) 我知道这个标题对于一些古老的问题看起来很熟悉,但我看过它们中的每一个,其中没有一个能够解决.这是我的代码:
class Island (object):E,W,R,P
def __init__(self, x, y):
self.init_animals(y)
def init_animals(y):
pass
isle = Island(x,y)
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in __init__
TypeError: init_animals() takes 1 positional arguments but 2 were given
Run Code Online (Sandbox Code Playgroud)
请告诉我,如果我有任何错误,我很困惑.最好的祝福
帮助我我在这里做错了什么,因为我收到以下错误,
类型错误:fizz_buzz() 采用 0 个位置参数,但给出了 1 个
class FizzBuzz:
def __init__(self, number_value):
self.number_value = number_value
def fizz_buzz():
if number_value % 3 == 0 and number_value % 5 == 0:
print("FizzBuzz")
elif number_value % 3 == 0:
print("Fizz")
elif number_value % 5 == 0:
print("Buzz")
else:
return f"{number_value} can't be multiplied by either 3 or 5"
number_value = int(input("Enter number: "))
fizzbuzz_object = FizzBuzz(number_value)
fizzbuzz_object.fizz_buzz()
Run Code Online (Sandbox Code Playgroud) 我写了一个如下所示的类:
class Logger:
@staticmethod
def get_timestamp():
import datetime
return datetime.datetime.utcnow()
def print_log(self,color, write_level, msg):
return color
def log_level_print(self,log_level, write_level, msg):
if log_level == 'ERROR':
return print_log(bcolors.FAIL, write_level, msg)
if log_level == 'WARN':
return print_log(bcolors.WARNING, write_level, msg)
if log_level == 'INFO':
return print_log(bcolors.OKGREEN, write_level, msg)
if log_level == 'DEBUG':
return print_log(bcolors.OKBLUE, write_level, msg)
else:
print(f"{Logger.get_timestamp()} {bcolors.FAIL}: Invalid LOG type{bcolors.ENDC}")
return
Run Code Online (Sandbox Code Playgroud)
在这里,我正在使用这个类:
from logger import Logger
demo = Logger()
print(demo.log_level_print('ERROR','ssdsd','sdsdsd'))
Run Code Online (Sandbox Code Playgroud)
我无法调用此函数,出现错误:
NameError: name 'print_log' is not defined
这是最奇怪的事情。我的 python 刚刚停止处理其构造函数中具有多个参数的类?运行 python 3.8.10 出现错误TypeError: Person() takes 1 positional argument but 2 were given
def Person(object):
def __init__(self, a, b):
self.aa = a
self.bb = b
pp = Person(20, 40)
Run Code Online (Sandbox Code Playgroud)
如果我将 Person__init__降低到一个参数,那么它就会起作用。如果我将其提高到 3,则会出现相同的takes 1 but 3 were given错误。我完全被难住了?
我有下面的类和其中定义的功能。
class utils:
def pass_hash(unhashed):
hashed = hashlib.sha256(unhashed)
hashed = hashed.hexdigest()
return hashed
Run Code Online (Sandbox Code Playgroud)
当我打电话
print(utils.pass_hash('abc'.encode()))
Run Code Online (Sandbox Code Playgroud)
它工作正常,但如果我打电话
obj = utils()
print(obj.pass_hash('abc'.encode()))
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
print(obj.pass_hash('abc'.encode()))
TypeError: pass_hash() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)
而如果我在函数中传递自变量,则这种行为会逆转,即它可以很好地与对象配合使用,但是在访问时像utils.pass_hash()一样会给出错误。
有人可以解释一下这种行为吗?