コード例 #1
0
ファイル: 33_元类.py プロジェクト: ismeimei/PythonLearn
#!/usr/bin/env python3
#coding:utf-8

#动态语言与静态语言最大区别:函数类的定义是编译时定义,而是运行时创建

#当导入一个模块时,解释器会依次执行该模块的语句,然后动态创建出一个hello的class对象
from Hello import Hello
h = Hello()
h.hello()  #Hello, world.
h.hello('boy')  #Hello, boy.

#type()函数查看一个类型或变量类型
print(type(h))  #<class 'Hello.Hello'>
print(type(Hello))  #<class 'type'>


#class是动态创建的,创建class的方法就是使用type()函数
#type()函数即可返回一个对象的类型,又可以创建出新的类型
def fn(self, name='wori'):  #先定义函数
    print('Hello, %s.' % name)


Hello = type('Hello', (object, ), dict(hello=fn))  #创建Hello class
h = Hello()
h.hello()  #Hello, wori.
h.hello('woca')  #Hello, woca.

print(type(h))  #<class '__main__.Hello'>
print(type(Hello))  #<class 'type'>
'''
创建出一个class对象,type()函数需要依次传入3个参数
コード例 #2
0
from Hello import Hello
h = Hello()
h.hello()
#Hello, world

h1 = Hello()
h1.hello('Nancy')
#Hello, Nancy.

print(type(Hello))
#<class 'type'>
#type()函数可以查看一个类型或变量的类型,Hello是一个class,它的类型就是type

print(type(h1))
#<class 'Hello.Hello'>

#h1是一个实例,它的类型就是class Hello


#type()函数既可以返回一个对象的类型,又可以创建出新的类型
def fn(self, name='world'):  # 先定义函数
    print('Hello, %s.' % name)


Hello1 = type('Hello', (object, ), dict(hello=fn))
#依次传入三个参数:
#1.class的名称;
#2.继承的父类集合,注意Python支持多重继承,如果只有一个父类,别忘了tuple的单元素写法;
#3.class的方法名称与函数绑定,这里我们把函数fn绑定到方法名hello上。
print(type(Hello1))
#<class 'type'>
コード例 #3
0
ファイル: hello1.py プロジェクト: ttp55/LearnPy
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

__author__ = 'WZG'

from Hello import Hello

h = Hello()
print(type(Hello), type(h), h.hello())