Как Вы разделяете тип файла на подклассы в Python?

Любой, кто до сих пор борется с SSL-сертификатами StartCom на Android 2.1, посещает https://www.startssl.com/certs/ и загружает ca.pem, теперь в ответе предоставленный @emmby заменить

`export CLASSPATH=bcprov-jdk16-145.jar
 CERTSTORE=res/raw/mystore.bks
      if [ -a $CERTSTORE ]; then
          rm $CERTSTORE || exit 1
      fi
 keytool \
  -import \
  -v \
  -trustcacerts \
  -alias 0 \
  -file <(openssl x509 -in mycert.pem) \
  -keystore $CERTSTORE \
  -storetype BKS \
  -provider org.bouncycastle.jce.provider.BouncyCastleProvider \
  -providerpath /usr/share/java/bcprov.jar \
  -storepass some-password`

на

 `export CLASSPATH=bcprov-jdk16-145.jar
 CERTSTORE=res/raw/mystore.bks
      if [ -a $CERTSTORE ]; then
          rm $CERTSTORE || exit 1
      fi
 keytool \
  -import \
  -v \
  -trustcacerts \
  -alias 0 \
  -file <(openssl x509 -in ca.pem) \
  -keystore $CERTSTORE \
  -storetype BKS \
  -provider org.bouncycastle.jce.provider.BouncyCastleProvider \
  -providerpath /usr/share/java/bcprov.jar \
  -storepass some-password`

Должно работать из коробки. Я боролся с этим более суток, даже после того, как @emmby получил идеальный ответ ... Надеюсь, это кому-нибудь поможет ...

13
задан Adam Rosenfield 4 July 2009 в 19:07
поделиться

2 ответа

Вызов file .__ init __ вполне возможен (например, в '/ dev / null'), но не имеет реального использования, потому что вы пытались переопределить write не "принимает" для целей print операторов - последний внутренне вызывает реальный file.write , когда видит, что sys.stdout является фактический экземпляр файла (и путем наследования вы сделали это так).

print на самом деле не нуждается ни в каком другом методе, кроме write , поэтому ваш класс наследовать от объекта вместо файла будет работать.

Если вам нужны другие файловые методы (например, print - это еще не все, что вы делаете), вы лучше всего реализовать их самостоятельно.

12
ответ дан 2 December 2019 в 00:19
поделиться

Вы также можете избежать использования super :

class SuperFile(file):

    def __init__(self, *args, **kwargs):
        file.__init__(self, *args, **kwargs)

Вы сможете писать с его помощью.

3
ответ дан 2 December 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: