, bir proto-dosyasını File.proto
sahiptir. Kendi sözlüklerimi tanımlamadan, oluşturulan bir dosyadan File_pb2.py
numaralı dosyadan 1 değerine (bu File_pb2.ONE değerine karşılık gelen) bir "ONE" (File_pb2.ONE adına karşılık gelir) dizesini istiyorum. Bunu nasıl yapabilirim? oluşturulan piton varsayarsakPython'da en üst düzey protobuf enum değer adı nasıl alınır? <code>File.proto</code> gelen Protoc ile</p> <pre><code>enum Test { ONE = 1; TWO = 2; } </code></pre> <p>I oluşturmak dosya <code>File_pb2.py</code>: Örneğin
cevap
File_pb2.py kodunda bulunan bu deneyin:
file_pb2._TEST.values_by_name['ONE'].number
verecektir:
Senin durumundafile_pb2._TEST.values_by_number[1].name
, bu tersidir 'ONE'
vermelidir 1
.
DÜZENLEME: As doğru yorumlarda @dyoo tarafından işaret yeni bir yöntem daha sonra protobuf kütüphanede tanıtıldı:
file_pb2.Test.Name(1)
file_pb2.Test.Value('One')
DÜZENLEME: Bu proto3 tekrar değişti. Şimdi İsim() ve Değer() yöntemleri onlar gibi ulaşılabilir böylece EnumTypeWrapper sınıfa aittir:
file_pb2.Name(1)
file_pb2.Value('One')
bir çekicilik gibi çalışır. Teşekkürler. –
Bu düşük seviyeli görünüyor; Bunu daha doğrudan almak için numaralandırma sınıfındaki 'Name()' yöntemini kullanabilmeniz gerekir. Örneğin. 'file_pb2.Test.Name (1)' de size "ONE" vermelidir. Bu, https://code.google.com/p/protobuf/source/browse/trunk/python/google/protobuf/internal/enum_type_wrapper.py?r=425 – dyoo
@dyoo'nun bir parçası değil. Cevabı yazdığım anda Name() yöntemi (Jul 16 '12). Başvurduğunuz dosya 21 Eylül '12 oluşturuldu. Neyse, yorum için teşekkürler, ben cevapta ekleyeceğim. – Tisho
- 1. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 2. Git, <<<<<<< HEAD dosyasına
- 3. Enum <? uzanır arabirim>
- 4. Java Enümleri: Bir Sınıfın <sayılarını listeleyiniz <? Enum>
- 5. Toplamda 1 <= i <j <k <= n'de GLPK
- 6. Nedir? ve << demek?
- 7. <: <İş nasıl?
- 8. ValueError: num olmalıdır 1 <= num <2 değil, 3
- 9. Bir parametre olarak başka <code>enum</code> ile <code>enum</code> sahip Java 8 akışı API
- 10. Genel yöntem enum <T>
- 11. İçindeki eleman sayısı <5 in <a1 <0</ a1><T>
- 12. Nullable Nasıl Yapılır <Enum>?
- 13. İki enum değerini '<' ile nasıl kıyaslayamıyoruz?
- 14. Numara referansını sayıya nasıl dönüştürebilirim?</p> <pre><code>enum Foo { Bar = 1, } </code></pre> <p>nasıl matematik kullanılmak üzere bir tamsayı içine bu enum bir başvuru dönüştürebilirim:
- 15. EJS: <% = versus <% -
- 16. "<%:" ne yapıyor?</p> <pre><code><%: Model.FirstName %> </code></pre> <p>"<%:" Ne vermez: do
- 17. Objective-C'de özel yönergeler oluşturmak mümkün mü?</p> <ul> <li>@interface</li> <li>@implementation</li> <li>@end</li> <li>@protocol bence</li> <li>@property</li> <li>@synthesize</li> </ul> <p>:
- 18. css: 2 veya <code><thead></code> yılında <code><tr></code> daha varsa <tr>
- 19. Ben</em></strong> grafiği oluşturmak için <strong><em>AmCharts kullanıyorum</p> <p>, JavaScript sürümü
- 20. Ayrıştırma \ - Bash</p> <p><code>parse_input.py</code> gelen piton 2.7.3
- 21. Dizisi -</p> <pre><code>enum {MyA, MyB, Null}; typedef NSNumber myEnum; </code></pre> <p>Yoksa bir dizi nasıl oluşturabilirim <pre><code>typedef enum {MyA, MyB, Null} myEnum; </code></pre> ) Having NSArray
- 22. Neden For döngüsüne girebilir? o döngü boyunca bunun içinde alabilirsiniz neden <code>i < -1</code><code>-1</code> olduğunu
- 23. X * 2 + 1 hesaplamanın kısa bir yolu var mı? <br> <code>x = x*2;</code><code>x *= 2;</code></p> <p>gibi yazılmış olabilir
- 24. type = 1 << 0? Ile ne anlama geliyor?
- 25. Kanal seç <- <- Kanal
- 26. <nedir? ve <? php
- 27. XPath - tüm elemanlar alt elemanlara belge</p> <pre><code><a> <b> <c/> <d/> </b> <b> <c/> <d/> </b> </a> </code></pre> <p>Verilen
- 28. <option></option>
- 29. Neden füzyon günlüğü bağlama hataları yapmıyor? Bir ASP.NET web başlatırsanız</p> <ul> <li>EnableLog DWORD 1</li> <li>LogFailures DWORD 1</li> </ul> <p>:
- 30. Perl: bunun <code>$b</code> sonunda</p> <ul> <li><pre><code>{ 'b' => { 'c' => 1, 'd' => 1, 'e' => 1 } }; </code></pre></li> </ul> <p>: Bunun sonunda referansı
oluşturulan 'File_pb2.py'' sına ilişkin kodu için, neye benzer? –
@MarcGravell 'File_pb2.py''in görünümü genellikle protok versiyona bağlıdır. Soru, cevabın _standart protobuf python API_ ile ilgili olduğunu belirtmektedir, çünkü cevabı kendim herhangi bir yerde bulamıyorum. Örneğin, ilgili sorun için https://groups.google.com/forum/?fromgroups#!topic/protobuf/HRApuLNyYVQ –