python:class 成员变量 null 或 undefined

python:class member variable null or undefined

我是 python 的新手,正在创建一个 class,它的变量很少,但在我的处理方法中,我想检查是否设置了几个成员变量。就像 java script undefined 或 if i can set null 一样。我不想使用任何默认值:如何检查 null 或 undefined?

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. 

您可以使用

检查是否正在设置变量
def process(self):
    print('Name:',name)
    if self.state is not None :
        print('State:': self.state)

是None是python检查是否设置了某些东西的方式

您可以使用hasattr

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

或自己抓住 AttributeErrorhasattr 所做的一切):

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")

谢谢,它成功了,但还需要一个步骤。 我在构造函数中设置 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)