我有以下 React Native 模块:
_localStorage.js
import AsyncStorage from '@react-native-community/async-storage';
const _storeData = async (key, value) => {
try {
await AsyncStorage.setItem(key, value);
} catch (error) {
console.log(error);
}
}
const _retrieveData = async (key) => {
try {
await AsyncStorage.getItem(key);
} catch (error) {
console.log(error);
}
}
export {_storeData, _retrieveData};
Run Code Online (Sandbox Code Playgroud)
应用头文件
import React from 'react';
import {Button} from 'react-native-paper';
import {_retrieveData, _storeData} from '../../utils/_localStorage'
const LoginButton = () => {
return (
<Button icon='login' color='yellow' onPress={() => navigation.navigate('Login')}>
Login
</Button> …Run Code Online (Sandbox Code Playgroud) 我有一个DataWriter定义抽象方法的抽象类write()。该类应该是一组动态具体类的基类,其中每个类都旨在实现其自己的方法版本write()。为了定义meta方法参数的数据类型,我创建了WriterMetawrite()类型,如下所示:
WriterMeta = typing.Union[GSheetWritable, S3Writable, LocalWritable]
每个具体类将负责处理符合联合的不同类型之一,但 linter mypy似乎没有掌握这一点,因为当我write()使用其中一种类型定义具体类的方法的签名时参数的联合meta,它标记了 a Liskov substituion principle violation,我认为它不存在,因为具体类是抽象类的子集,这意味着父类可以毫无问题地替换子类。
这是我的代码:
class LocalWritable(typing.TypedDict):
file_name: str
class GSheetWritable(typing.TypedDict):
tab_name: str
class S3Writable(typing.TypedDict):
data_name: str
table_name: str
WriterMeta = typing.Union[GSheetWritable, S3Writable, LocalWritable]
class GSheetOutputWriter(DataWriter):
def __init__(
self, google_driver: GoogleApiDriver, folder: str, settings, timestamp, env
):
self._connector = google_driver
self.folder = folder
self.settings = settings
self.timestamp = timestamp
self.env = env
self.file_name …Run Code Online (Sandbox Code Playgroud) python abstract-class liskov-substitution-principle python-3.x mypy
我按照本教程在 Mac 上安装 Odoo 15,但在运行时遇到此错误pip install -r requirements.txt:
Error compiling Cython file:
------------------------------------------------------------
...
cdef load_traceback
cdef Waiter
cdef wait
cdef iwait
cdef reraise
cpdef GEVENT_CONFIG
^
------------------------------------------------------------
src/gevent/_gevent_cgreenlet.pxd:181:6: Variables cannot be declared with 'cpdef'. Use 'cdef' instead.
Run Code Online (Sandbox Code Playgroud)
我发现了几个解决 cython 错误的文档,但没有一个文档解决我遇到的特定异常。
我有一个视图集,并且我重写了list()方法,但是按字段进行的过滤停止工作。如何从代码中调用过滤选项:
这是我的观点:
class SupplementViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticated,)
queryset = models.Product.objects.filter()
serializer_class = serializers.SuplementSerializer
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter,)
search_fields = ('hotel', 'name')
filter_fields = ('id', 'hotel', 'name')
def perform_create(self, instance):
instance.save(product_type=models.Product.SUPPLEMENT)
def list(self, request, pk=None):
if pk == None:
supplements = models.Product.objects.filter(product_type=models.Product.SUPPLEMENT)
else:
supplements = models.Product.objects.get(product_type=models.Product.SUPPLEMENT, id=pk)
page = self.paginate_queryset(supplements)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(page, many=True)
result_set = serializer.data
return Response(result_set)
def get_result_set(self, supplements):
result_set = serializers.ProductSerializer(supplements, many=True).data
return …Run Code Online (Sandbox Code Playgroud) 我有以下 React 组件:
<SweetAlert
show={this.props.message}
success
title={this.props.message}
onConfirm={this.props.handleCloseAlert}>
</SweetAlert>
Run Code Online (Sandbox Code Playgroud)
这是我收到的警报:
success但我希望在执行时动态选择道具,所以我尝试了以下方法:
const alertType = () => {
switch(this.props.type) {
case ALERT_ERROR:
return 'error'
case ALERT_WARNING:
return 'warning'
case ALERT_DANGER:
return 'danger'
case ALERT_INFO:
return 'info'
case ALERT_SUCCESS:
return 'success'
}
}
<SweetAlert
show={this.props.message}
{...alertType()}
title={this.props.message}
onConfirm={this.props.handleCloseAlert}>
</SweetAlert>
Run Code Online (Sandbox Code Playgroud)
但我失去了它的警报类型:
我还没有找到向组件添加任意道具的方法。
我在类的init()方法中定义了一个实例变量,并从中派生了一个新类.当我尝试从辅助类的实例引用此变量时,它似乎没有被继承.
这是代码:
company=Company()
person=Person()
task=Task()
print(company.get_attrs())
class Entity(Persistent):
list_of_attrs=[]
list_of_attrs_flag=False
def __init__(self):
attributes={}
attributes_edition_flag={}
if not type(self).list_of_attrs_flag:
type(self).list_of_attrs=self.get_attrs_from_persistent()
type(self).list_of_attrs_flag=True
for attr in type(self).list_of_attrs:
attributes[attr]=''
attributes_edition_flag[attr]='false'
def get_attrs(self):
return(self.attributes)
class Company(Entity):
def hello(self):
print('hello')
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
MacBook-Pro-de-Hugo:Attractora hvillalobos$ virtual/bin/python3 control.py
Traceback (most recent call last):
File "control.py", line 7, in <module>
print(company.get_attrs())
File "/Users/hvillalobos/Dropbox/Code/Attractora/model.py", line 48, in get_attrs
return(self.attributes)
AttributeError: 'Company' object has no attribute 'attributes'
Run Code Online (Sandbox Code Playgroud)
它工作但我移动了一些东西(我猜),但我找不到什么.谢谢你的帮助
我有一个 Python 应用程序,它argparse使用声明的一组参数来实现:
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"--arg1",
default="dev",
choices=["real", "test", "dev"],
help="arg 1"
)
parser.add_argument("--arg2", default="0", help="arg 2")
parser.add_argument(
"--arg3",
nargs="+",
default=["one", "two"],
choices=["one", "two"],
help="arg 3",
)
parser.add_argument("--arg4", action="store_true", help="arg 4")
parser.add_argument("--arg5", action="store_true", help="arg 5")
parser.add_argument("--arg6", action="store_true", help="arg 6")
parser.add_argument("--arg7", default=None, help="arg 7")
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
如果我发送这些声明中未定义的参数,则会出现以下异常:
error: unrecognized arguments: arg8 value
Run Code Online (Sandbox Code Playgroud)
是否可以指示argparse接受未声明的参数?
python ×5
argparse ×1
asyncstorage ×1
cython ×1
django ×1
inheritance ×1
javascript ×1
liskov-substitution-principle ×1
material-ui ×1
mypy ×1
odoo ×1
oop ×1
python-3.x ×1
react-native ×1
reactjs ×1