İçe aktarılan adlar geçerli kapsamlara bağlı olduğundan, bir işlev içindeki içe aktarma yalnızca yerel bir adaya bağlanır. Kesinlikle ardından küresel DAİREMİZ olması gerekiyor __init__
şey ithal etmek varsa
, ilk global
olarak ithal ismi işaretlemek:
>>> def foo():
... global sys
... import sys
...
>>> sys
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> foo()
>>> sys
<module 'sys' (built-in)>
ancak bu genellikle garip ve bulmak olağanüstü zor hatalar yol açar . Bunu yapmayın, sadece ithalatlarınızı modül kapsamında yapın.
class Foo(object):
def __init__(self):
import os
self.join = os.path.join
ama yine o kullanılacak en iyi uygulama değil: diğer sınıf yöntemleri içinde ithal adını gerekiyorsa
, ayrıca bir örnek değişkeni ithal ismi atayabilir.
İçe aktarılan içeriğe bağlıdır ... Bunu yapmak istemediğinizi hissediyorum, ancak kullanım durumunuz nedir? –
Neden başka türlerde de ihtiyacınız varsa, sadece __init __() 'ye aktarmak istiyorsunuz? –
Çünkü bağımlılığı olan bir sınıfım var ve bağımlılığı yalnızca bir kişi bu sınıfı kullanıyorsa yüklensin (bir örnek oluşturur) – tapioco123