簡體   English   中英

python:class 成員變量 null 或未定義

[英]python:class member variable null or undefined

我是 python 的新手,並創建了一個 class 變量,但在我的處理方法中想要檢查是否設置了少量成員變量。 就像 java 腳本未定義或者我可以設置 null 一樣。 我不想使用任何默認值:我如何檢查 null 或未定義?

class MyClass:
  def __init__(self, name, city):
      self.name = name
      self.city = city

  def setState(self,state)
      self.state = state

  def process(self):
      print("Name:", name)
    # here i want check whether state is being  set or not. 
    # How can i do it. I tried  if self.state is None but getting 
    # exception AttributeError. 

你可以使用hasattr

if hasattr(self, 'state'):
    ...

或自己捕獲AttributeError (實際上,這就是hasattr所做的一切):

try:
    x = self.state
except AttributeError:
    print("No state")
else:
    print(f"State is {x}")

但是,在__init__方法中簡單地將屬性初始化為None要好得多。

def __init__(self, name, city):
    self.name = name
    self.city = city
    self.state = None

然后您可以根據需要簡單地檢查self.state的值。

if self.state is not None:
    ...

順便說一句,除非您想對state的值進行某種驗證,否則只需讓用戶直接訪問self.state而不是使用方法來設置值。

x = MyClass("bob", "Townsville")
x.state = "Vermont"  # rather than x.setState("Vermont")

您可以使用檢查是否正在設置變量

def process(self):
    print('Name:',name)
    if self.state is not None :
        print('State:': self.state)

is None 是python檢查是否設置了某些東西的方式

謝謝它有效,但需要更多步驟。 我在構造函數中設置 state = None 然后

class MyClass:
  def __init__(self, name, city):
      self.name = name
      self.city = city
      self.state = None

def process(self):
    print('Name:',name)
    if self.state is not None :
        print('State:': self.state)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM