在Python中访问属性和方法

作为一种面向对象的编程语言,python强调对象。类是从中创建对象的蓝图。python中的每个类都可以具有许多属性,包括作为属性的函数。

访问类的属性

为了检查类的属性并操纵这些属性,我们使用了许多python内置方法,如下所示。

  • getattr() -用于访问类属性的python方法。

  • hasattr()  -用于验证类中属性是否存在的python方法。

  • setattr()  -用于在类中设置附加属性的python方法。

以下程序说明了如何使用上述方法访问python中的类属性。

示例

class StateInfo:
   StateName='Telangana'
   population='3.5 crore'

   def func1(self):
      print("Hello from my function")

print getattr(StateInfo,'StateName')

# returns true if object has attribute
print hasattr(StateInfo,'population')

setattr(StateInfo,'ForestCover',39)

print getattr(StateInfo,'ForestCover')

print hasattr(StateInfo,'func1')

输出结果

运行上面的代码给我们以下结果-

Telangana
True
39
True

访问类的方法

要访问类的方法,我们需要将一个类实例化为一个对象。然后,我们可以将该方法作为类的实例方法进行访问,如下面的程序所示。在这里,通过self参数,实例方法可以访问同一对象上的属性和其他方法。

示例

class StateInfo:
   StateName='Telangana'
   population='3.5 crore'

   def func1(self):
      print("Hello from my function")

print getattr(StateInfo,'StateName')

# returns true if object has attribute
print hasattr(StateInfo,'population')

setattr(StateInfo,'ForestCover',39)

print getattr(StateInfo,'ForestCover')

print hasattr(StateInfo,'func1')

obj = StateInfo()obj.func1()

输出结果

运行上面的代码给我们以下结果-

Telangana
True
39
True
Hello from my function

从另一类访问一类的方法

要从另一个类访问一个类的方法,我们需要将被调用类的实例传递给调用类。下面的示例显示了它是如何完成的。

示例

class ClassOne:
def m_class1(self):
print "Method in class 1"

# Definign the calling Class
class ClassTwo(object):
def __init__(self, c1):
self.c1 = c1

# The calling method
def m_class2(self):
Object_inst = self.c1()
Object_inst.m_class1()

# Passing classone object as an argument to classTwo
obj = ClassTwo(ClassOne)
obj.m_class2()

输出结果

运行上面的代码给我们以下结果-

Method in class 1