假设我们有一个来自图书馆的类,
@dataclass(frozen=True)
class Dog:
name: str
blabla : int
# lot of parameters
# ...
whatever: InitVar[Sequence[str]]
Run Code Online (Sandbox Code Playgroud)
我有一个来自外部库的狗构造函数。
pluto = dog_factory() # returns a Dog object
Run Code Online (Sandbox Code Playgroud)
我希望这只狗有一个新成员,比如说“ bite
”。显然pluto['bite'] = True
会失败,因为数据类被冻结。
所以我的想法是从 Dog 中创建一个子类,并从“pluto”实例中获取所有数据。
class AngryDog(Dog):
# what will come here ?
Run Code Online (Sandbox Code Playgroud)
有没有办法避免手动将所有类 Dog 参数放入init中?像复制构造函数之类的东西。
理想情况下:
class AngryDog(Dog):
def __init__(self, dog, bite = True):
copy_construct(dog)
Run Code Online (Sandbox Code Playgroud) 下面的代码开始计数,3秒后,它将打印"i"变量的值.程序打印变量,但不会以我想要的样式打印.它不会在if(token.IsCancellationRequested)部分下打印Console.Writeline语句.我认为当取消请求为真时,程序会直接退出.当取消请求为真时,我是否可以打印出console.writeline语句?
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication17
{
class Program
{
private static void Stop(CancellationTokenSource src)
{
Thread.Sleep(3000);
src.Cancel();
}
static void Count(CancellationToken token)
{
for (int i = 0; i < 100000; i++)
{
Console.WriteLine(i);
Thread.Sleep(80);
if (token.IsCancellationRequested)
{
Console.WriteLine("Current number is :" + i.ToString());
break;
}
else
{
Console.Clear();
}
}
}
static void Main(string[] args)
{
CancellationTokenSource src1 = new CancellationTokenSource();
CancellationToken tkn1 = new CancellationToken();
var task1 = Task.Run(() => Count(tkn1), tkn1);
var task2 …
Run Code Online (Sandbox Code Playgroud)