TypeError: 'module' object is not callable
Person.py
"""
類的定義
"""
class Person:
# 構造方法
def __init__(self, n, a, u):
# global name, age
self.name = n
self.age = a
self.url = u
# 普通方法
def print_info(self):
print('url={},name={},age={}'.format(self.url, self.name, self.age))
if __name__ == '__main__':
person = Person('Tom', 100, 'www.baidu.com')
person2 = Person('Jerry', 200, 'www.google.cn')
person.print_info()
person2.print_info()
# url=www.baidu.com,name=Tom,age=100
# url=www.google.cn,name=Jerry,age=200
object_to_json.py
"""
對象轉化為json
"""
import json
import Person
def to_json():
# 初始化person對象
person = Person('Tom', 100, 'www.baidu.com')
print('person對象--->', person)
# 將person對象轉化為dict
person_dict = person.__dict__
print('person對象轉化為dict--->', person_dict)
# 將dict轉化為json
person_json = json.dumps(person_dict)
print('dict轉化為json', person_json)
if __name__ == '__main__':
to_json()
運行object_to_json.py時報錯:
Traceback (most recent call last):
File "E:/PycharmProjects/pythonProject/類/object_to_json.py", line 26, in <module>
to_json()
File "E:/PycharmProjects/pythonProject/類/object_to_json.py", line 13, in to_json
person = Person('Tom', 100, 'www.baidu.com')
TypeError: 'module' object is not callable
原因:模塊不可用,是因為導入的模塊或者實例化對象有問題。
解決方法:
第一種:import Person
導入的是Person這個模塊(具體來說是Person.py這個文件),但不是Person這個類,所以在實例化Person對象的時候需要加上模塊名限定。
import Person
...
person = Person.Person('Tom', 100, 'www.baidu.com')
...
第二種:導入Person模塊的Person類,直接實例化Person對象即可。
from Person import Person
...
person = Person('Tom', 100, 'www.baidu.com')
...