我想要创建一个扩展int基类的类,以便对象本身是一个整数(即您设置它并直接从它读取),但是也有输入验证--例如,只允许一个给定的范围。
根据我的研究,扩展普通基类时不会调用__init__方法,因此我不知道如何做。我也不清楚如何访问对象的值(即分配给它的实际整数)或如何从类中修改该值。我看到了扩展任何基类(string、float、tuple、list等)的相同问题。
如果我可以使用__init__,它会是这样的:
class MyInt(int):
def __init__(self, value):
if value < 0 or value > 100
在中,@AshwiniChaudhary给出了一个很好的答案,可以用不同的set()函数创建一个新的Counter对象:
from collections import Counter
class CustomCounter(Counter):
def __setitem__(self, key, value):
if len(key) > 1 and not key.endswith(u"\uE000"):
key += u"\uE000"
super(CustomCounter, sel
有很多关于mangling及其用法的信息,但是我很难理解下面这段代码:
class Parent:
NAME = 'PARENT'
def __init__(self):
self.print_me()
def print_me(self):
print(f"Parent class {self.NAME}")
class Child(Parent):
NAME = 'CHILD'
def __init__(self):
super().__init__()
我有一个这样的课程
class Tree:
# class attributes:
a = []
b = None
def __init__(self, b, a_list):
self.b = b
if a_list is not None:
initialize_a_list(a_list)
def initialize_a_list(self, a_list):
self.a.append(a_list)
当我打这个电话的时候tree = Tree(b, None)
这里的目标是从一个可迭代的地方提取所有警报:
obj = Alerts(db, args)
for alert in obj.alerts()
pass
现在,我需要再添加几个源代码,我不确定这是否是实例化AllAlerts构造函数中所有类的好方法?我也不喜欢这样一个事实:每次有新的属性(实现松散耦合)时,我都必须将它们添加到self.sources属性中。
根据下面提供的代码片段,您能推荐一些不同的,也许更好的方法吗?
代码:
from itertools import chain
from . import mappings
from .utils import converte
我有下面的代码,我知道__new__是用来创建类的实例的,而__init__方法是用来初始化对象的值的。
是否只在返回基类的实例时调用__init__?
我想要的是返回一个名为class A的另一个类的实例。__init__有办法配置class A的实例吗?
# Python program to
# demonstrate __new__ method
# class whose object
# is returned
class GeeksforGeeks(object):
def __str__(self):
return "GeeksforGee
我想知道是否可以创建一个父类来处理一些公共逻辑,但是在子类中有一些特定的逻辑,然后在不初始化子类的情况下运行它,因为它是抽象的。
例如:
class Person:
def __init__(self, fname, lname, country):
self.firstname = fname
self.lastname = lname
self.country = country
if country == "US":
# Call class UnitedStates(Person)
else if country
我有一个基类(仅从object继承),它具有一组排序算法的通用测试。现在,对于每个特定的算法,我想创建一个测试类,它继承自unittest.TestCase和这个类,并对所有排序算法进行了通用测试。
例如,我想创建一个类来测试,比如说,一个气泡排序。目前,我正在做:
import unittest
from ands.algorithms.sorting import bubble_sort
from tests.algorithms.sorting.base_tests import *
class TestBubbleSort(unittest.TestCase, SortingAl
对不起,我想不出一个更好的头衔。
请考虑这个例子:
class A:
def __init__(self, x):
self.attr = x
class B(A):
x = 1
def __init__(self):
super().__init__(x=self.x)
class C(B):
x = 2
def __init__(self):
super().__init__()
c = C()
print(c.attr) # 2
此代码打印2。
这意味着self in B.__init__
是否可以从中间修改/扩展继承的方法。我意识到我可以调用super并获得原始方法,然后将代码放在调用之前或之后,这将扩展原始方法。有没有一种技术可以做一些类似的事情,但从一个方法的中间?
class Base():
def __init__(self):
self.size = 4
def get_data(self):
data = []
for num in range(self.size):
data.append("doing stuff")
data.app
我想在Python中创建一个抽象基类,其中的一部分是如何创建实例。不同的具体实现代表了可以互换使用的各种算法。下面是一个简化的示例(通常的免责声明--真正的用例更复杂):
from abc import ABC, abstractmethod
from typing import Type
class AbstractAlgorithm(ABC):
@abstractmethod
def __init__(self, param: int):
pass
@abstractmethod
def get_result(self) -> i
为了方便起见,我想创建datetime.timedelta的子类。其思想是将类定义为这样:
class Hours(datetime.timedelta):
def __init__(self, hours):
super(Hours, self).__init__(hours=hours)
所以我可以快速创建这样的时间差:
x = Hours(n)
然而,上面的代码产生的是n天的时间增量,而不是n小时。例如,查看以下ipython会话:
In [1]: import datetime
In [2]: class Hours(datetime.timedelta):
我正在试图重写dict在json.dumps上的行为。例如,我可以订购钥匙。因此,我创建了一个继承if dict的类,并重写了它的一些方法。
import json
class A(dict):
def __iter__(self):
for i in range(10):
yield i
def __getitem__(self, name):
return None
print json.dumps(A())
但是它没有调用我的任何方法,只给了我{}
有一种方法可以让我表现出严谨的行为:
import json
我正在从书中学习蟒蛇。在问这个问题之前,我已经查询了给出的的答案,并阅读了给出的文档,但是它们并没有完全澄清我想要知道的内容。
在这本书中,UserDict类被写成,
class UserDict:
def __init__(self, dict=None):
self.data = {}
if dict is not None: self.update(dict)
接下来还提到了另一个类FileInfo,
class FileInfo(UserDict):
"store file metadata"
def __ini
我正在尝试从父类继承类构造函数。在尝试了堆栈溢出中已经存在的一些建议之后,我想自己问一个问题,试图理解:( 1)为什么这段代码是错误的,以及2)如何纠正它?
父类:
class Submit_Copasi_Job(object):
'''
Submit a properly formatted copasi file to sun grid engine
'''
def __init__(self,copasi_file,report_name):
self.copasi_file=copasi_f