相关疑难解决方法(0)

Python继承,类级变量,__ init__不带参数

编辑:这是一个愚蠢的错误,看看答案,但我的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)

谁能告诉我如何解决这个问题?

python pipelining

5
推荐指数
1
解决办法
5414
查看次数

Python:__ init __()需要2个位置参数,但是给出了3个

我正在尝试使用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 tkinter typeerror

5
推荐指数
1
解决办法
2万
查看次数

Python 错误“__init__() 采用 1 个位置参数,但给出了 2 个”

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)

python python-3.x

5
推荐指数
1
解决办法
9598
查看次数

TypeError:init_animals()接受1个位置参数,但给出2个

我知道这个标题对于一些古老的问题看起来很熟悉,但我看过它们中的每一个,其中没有一个能够解决.这是我的代码:

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)

请告诉我,如果我有任何错误,我很困惑.最好的祝福

python methods class init typeerror

3
推荐指数
1
解决办法
7853
查看次数

类型错误:采用 0 个位置参数,但给出了 1 个

帮助我我在这里做错了什么,因为我收到以下错误,

类型错误: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)

python

3
推荐指数
2
解决办法
4563
查看次数

Python 类中未定义函数名称

我写了一个如下所示的类:

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-3.x

3
推荐指数
1
解决办法
3788
查看次数

“TypeError:Person() 采用 1 个位置参数,但给出了 2 个”,但构造函数采用两个参数

这是最奇怪的事情。我的 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错误。我完全被难住了?

python

0
推荐指数
1
解决办法
8655
查看次数

如果要直接使用self而不是class对象,python函数是否需要self

我有下面的类和其中定义的功能。

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()一样会给出错误。

有人可以解释一下这种行为吗?

python python-3.x

-2
推荐指数
1
解决办法
47
查看次数

标签 统计

python ×7

python-3.x ×3

typeerror ×2

class ×1

init ×1

methods ×1

pipelining ×1

tkinter ×1