>  기사  >  백엔드 개발  >  Python에서 서로 다른 클래스 간에 메서드를 호출하는 방법

Python에서 서로 다른 클래스 간에 메서드를 호출하는 방법

尚
원래의
2019-06-29 14:26:2710397검색

Python에서 서로 다른 클래스 간에 메서드를 호출하는 방법

Python에서 클래스 간 특성 및 메서드 호출

class A(object):  #定义一个类
        name='python' #类属性
        def __init__(self): #实例属性
                self.age=18
    def a_print(self):  #实例方法
            print('aaa')
    @classmethod   #类方法
    def b_print(cls):  #cls指代当前的类
            print(cls.__name__)  #获取当前类名
    @staticmethod   #静态方法
    def c_print():
            print('static')
print(A.name) #调用类属性
A.b_print() #调用类方法
# print(A.age) 不可以调用实例属性
print(A().age)  #匿名实例对象可以调用实例属性
a_obj=A() # 类对象 可以调用这个类中所有方法和属性
print(a_obj.age)
print(a_obj.name)
a_obj=A()       #在外部生成一个对象
a_obj.num=1000  #对 对象增加一个额外属性,并赋值
def func(a_obj):  #再把这个对象传递到另一个方法中
        print(a_obj.num) #这个方法中我就可以拿到这个对象,并用这个对象获取到这个对象额外添加       的数据
func(a_obj)
#可以在方法中传递数据
#一个类想要调用另一个类的方法和属性,有两种形式
# 1.继承
# 2.把另外一个对象传递到这个类中,在这个类中调用实例对象
#  把一个类当做是另一个类的属性,通过属性调用的方式调用另一个类的方法
class B(object):
        def __init__(self):
            self.a_obj=A() #把A对象直接作为B的属性
        def func(self,a_obj):
            print(a_obj.num)
            a_obj.a_print()
b_obj=B()
b_obj.a_obj.a_print()
b_obj.a_obj.b_print()
b_obj=B()
b_obj.func(a_obj)

예:

#🎜🎜 #son. py와 all.py는 같은 폴더에 있으며 from son import * 또는 import son을 통해 서로 호출할 수 있습니다.

son.py에서 SON 클래스를 동적으로 인스턴스화할 수 있으며, 매개변수를 통해 ALL의 인스턴스를 SON에 전달하여 ALL 클래스의 메서드를 호출할 수도 있습니다.

all.py

from son import *
class ALL():
 def __init__(self):
  self.mSon = SON(self)
 def getAll(self):
  print "=================getall---------------"
  return self.mSon.getSon()
 def getAlltest(self):
  print "=================getAlltest---------------"
Instance = ALL()
Instance.getAll()

son.py


class SON():
 def __init__(self, instance):
 self.mBattle = instance
 def getSon(self):
 return self.mBattle.getAlltest()

Python 관련 기술 기사를 더 보려면

Python을 방문하세요. 튜토리얼 칼럼에서 배워보세요!

위 내용은 Python에서 서로 다른 클래스 간에 메서드를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.