python - मैं मूल्य के बिना पायथन में कोई विशेषता कैसे घोषित कर सकता हूं?




class (4)

अजगर में, और कई अन्य भाषाओं में, कोई मूल्य नहीं है जिसका अर्थ है "कोई मूल्य नहीं" पायथन में, वह मान None तो आप ऐसा कुछ कर सकते हैं:

class User:
   UserName = None
   PassWord = None

वे निश्चित रूप से आवृत्ति चर की तरह ध्वनि, और नहीं वर्ग चर, तो ऐसा करें:

class User(object):
    def __init__(self):
        self.UserName = None
        self.PassWord = None

ध्यान दें कि पायथन समय-समय पर None मूल्य को निहित करता है:

def f():
    pass
g = f() # g now has the value of None

सी # में मैं जाता हूं:

string UserName;
string Password;

लेकिन अब, पायथन में:

class User:
    UserName
    Password

मुझे एक त्रुटि प्राप्त हुई है जो UserName परिभाषित नहीं है। क्या मैं चर के बिना एक चर घोषित नहीं कर सकता?


आपके कोड में:

class User:
    UserName
    Password

UserName और Password अभिव्यक्ति के रूप में पार्स किए जाते हैं। चूंकि वे इस बिंदु पर असाइन नहीं किए गए हैं, इसलिए आपको एक NameError मिलता है।

अजगर में, किसी एन्क्रिप्शन में उपयोग किए जाने से पहले एक वेरिएबल को असाइनमेंट स्टेटमेंट के साथ परिभाषित किया जाना चाहिए, अन्यथा आपको एक नेमएर्रर मिलेगा। ध्यान दें कि "पहले" यहां "निष्पादन आदेश" का अर्थ है, "स्रोत कोड क्रम" नहीं। इसके लिए थोड़ी अधिक है (आयात स्टेटमेंट, ग्लोबल, नेमस्पेस हैक्स), लेकिन चलो इसे यहां सरल रखें।

एक वैरिएबल "बिना किसी मूल्य के" को परिभाषित करने के लिए मुहावरेदार तरीका यह मान None निर्दिष्ट करना है

इसके अलावा, आपका कोड ऐसा दिखता है जैसे यह वास्तव में आवृत्तियों के सदस्यों को करना चाहता है, और न कि वर्ग के सदस्य। यह करने के लिए मुहावरेदार तरीका है, जैसा कि कुछ स्थिर विश्लेषण उपकरणों जैसे कि pylint द्वारा पहचाना जाता है:

class User(object):
    def __init__(self):
        self.username = None
        self.password = None

साथ ही, यह सभी पायदानों को "ऑब्जेक्ट" से प्राप्त करने के लिए एक अच्छा पायथन शैली है, ताकि आप नए-स्टाइल कक्षाओं का उपयोग करें, और लोअरकेस_विंडरकोर या प्रारंभिक लावरविथ कैप सम्मेलन के साथ इंस्टेंस वैरिएबल को नाम दें। प्रारंभिक कैप शैली काफी सार्वभौमिक वर्ग के नामों के लिए आरक्षित है।


आप नहीं कर सकते अजगर में, "चर" केवल नाम हैं एक नाम हमेशा एक वस्तु के लिए अंक ("बाध्य" है)। ऐसा नाम असाइन करने के लिए सम्मेलन है जो अभी तक उचित मूल्य नहीं है, लेकिन किसी को None होना चाहिए

आप यहां मेरे उत्तर में दिलचस्पी ले सकते हैं


बस किसी के मान असाइन करें:

self.username = None





class