vs Son zamanlarda bazı tweets ve hasattr hakkında python documentation okuma edilmiş ve şöyle der:Python hasattr getattr
hasattr (nesne, isim)
argümanları bir nesne ve bir dize vardır. Dize, nesnenin özniteliklerinden biri olan
> adı ise, yanlış değilse, sonuç doğrudur. (Bu getattr (nesne, isim) çağırarak ve bir AttributeError yükseltir olmadığını görerek uygulanmaktadır.) O af dilemesini kolay olduğunu söylüyor Python bir sloganı vardır
genellikle kabul ettiğim izninden daha fazla. sonuçlarla
import timeit
definition="""\
class A(object):
a = 1
a = A()
"""
stm="""\
hasattr(a, 'a')
"""
print timeit.timeit(stmt=stm, setup=definition, number=10000000)
stm="""\
getattr(a, 'a')
"""
print timeit.timeit(stmt=stm, setup=definition, number=10000000)
:
$ python test.py
hasattr(a, 'a')
1.26515984535
getattr(a, 'a')
1.32518696785
boyunca hep şeffaf ne olur nitelik doesn da denedik
Bunu çok basit piton kodunu bu durumda bir performans testini yapmaya çalıştık Yoktur ve getattr ile hasattr arasındaki farklar daha büyüktür. Öyleyse şimdiye kadar gördüğüm şey, getattr'ın hasattr'den daha yavaş olmasıdır, fakat belgelerde getattr diyor. boyunca hep şeffaf hasattr ve getattr ait CPython uygulanmasını arandı ve her iki yanındaki işlevini çağırmak gibi görünüyor:v = PyObject_GetAttr(v, name);
ama muhtemelen daha yavaş yapar hasattr daha getattr fazla klişe vardır.
Neden belgelemede gratttr gratttr dediğimizi ve neden performansa bağlı olmadığına dair kullanıcılara gtrttr kullanmasını teşvik ettiğimizi kimse biliyor mu? Sadece daha pythonic olduğu için mi? Belki de testi :)
sayesinde yanlış bir şey yapıyorum
,
Raúl
burada fark performans değil. 5 nanosaniye gibi konuşuyorsun. Python'u kullanarak binlerce kez kaybedersiniz. Buradaki fark, yapmanız gereken şey için doğru olanıdır. – cHao
Performans farkı nokta değildi. Neden getattr çağrıldığını bildiren belgelerindeki yorum neden orada olduğunu anlamadım. – raulcumplido
Belki bir noktada 'getattr 'diye adlandırdı, şimdi değil, ama hiç kimse dokümanlar ... Açıkçası, yine de, bu yine de API belgelerine ait olmayan bir ifadedir. “Nasıl” nın “ne” nin önemli bir parçası olmadığı sürece, dokümanlar neler olduğunu açıklamalıdır. – cHao