当我运行下面的代码时:
import pandas as pd
from dataclasses import dataclass
@dataclass
class SomeClass:
df_in: pd.DataFrame
def __post__init__(self):
self.b = 1
if __name__ == '__main__':
df_in = pd.DataFrame([])
p = SomeClass(df_in=df_in)
p.b
Run Code Online (Sandbox Code Playgroud)
我明白了
AttributeError: 'SomeClass' object has no attribute 'b'
Run Code Online (Sandbox Code Playgroud)
为什么?
编辑:
我是否正确使用post__init因为数据类中没有init
在 Kotlin 中,未声明为 nullable 或 Lateinit 的变量必须在构造函数(或 init)中初始化。我正在尝试这样做:
class Foo{
var foo:myType
init{
complicatedFooInit()
}
fun complicatedFooInit(){
foo = //a whole bunch of code here
}
}
Run Code Online (Sandbox Code Playgroud)
我仍然收到Property must be initialized or declared abstract错误。您可以通过在函数中创建myTypeanInt并将其设置为等于 3 来轻松重现此情况complicatedFooInit。显然有一些方法可以解决这个问题(只是不让它成为一个函数,让complicatedFooInitreturnmyType并将 foo 设置为等于它,等等)。我的问题是,为什么上面的代码无效?或者经过一些调整后它是否有效?
我的单元测试有问题,我不知道为什么,我有以下堆栈:
Traceback (most recent call last):
File "novaapiclient_tests.py", line 11, in test_create_server
nova = novaapiclient.NovaAPIClient()
TypeError: __init__() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
按照我的测试代码:
class TestFunction(unittest.TestCase):
def setUp(self):
self.nova = novaapiclient.NovaAPIClient()
def test_create_server(self):
self.setUp()
lsbf = self.nova.lst_of_servers(self.nova.listServers())
image = "3f9e6696-2ed2-4e06-ae16-c828062addbe"
flavor = "m1.tiny"
name = "testing_unit"
self.nova.createServer(image, flavor, name)
time.sleep(60)
lsaf = self.nova.lst_of_servers(self.nova.listServers())
if(len(lsbf) < len(lsaf)):
assertTrue(True)
else:
assertTrue(False)
def delete_server(self):
self.setUp()
serv_id = "13e0c3de-d736-47ec-bc22-3a794aa3e2a9"
self.nova.deleteServer(serv_id)
ls = self.nova.lst_of_servers(self.nova.listServers())
j = 0
fin = False
while(j < 3 and not …Run Code Online (Sandbox Code Playgroud) 由于某种原因,我不能在datacenter.cpp中使用vector _vec.它说" 这个 "是"nullptr"
请帮助,谢谢<3
datacenter.h
#pragma once
#include <iostream>
#include <vector>
class datacenter
{
public:
datacenter();
~datacenter();
void get_elements();
std::vector<float> _vec;
};
Run Code Online (Sandbox Code Playgroud)
datacenter.cpp
#include "datacenter.h"
datacenter::datacenter(){}
void datacenter::get_elements()
{
if (_vec.empty()) { //<---- the error appears here
std::cout << "empty" << std::endl;
}
}
datacenter::~datacenter(){}
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include <iostream>
#include <vector>
#include "datacenter.h"
class datacenter;
int main()
{
std::unique_ptr<datacenter> dc;
dc->get_elements();
}
Run Code Online (Sandbox Code Playgroud)